冒泡排序法
思路:从第一位开始,逐个与下一位比较,大于下一位则交换,小于等于下一位则他们的相对位置不用改变,直到数组中的最后一位确定为该数组的最大值。
同理,再确定倒数第二位,倒数第三位,直到确定了正数第二位为止,升序排列成功。
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void bubble_sort(int* arr,int len) {
while (len>1) { //10个数需要确定后9个位置,len个数需要确定后len-1个位置
for (int i = 0;i < len-1; i++) { //第一个数比较9次(len-1次),第二个数比较8次......
if (arr[i] > arr[i + 1]) { //前比后大则换位
int temp = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = temp;
}
else //前比后小,或二者相等,不用执行任何操作,直接i++开始下次比较
;
}
len--;
}
}
int main() {
int arr[10] = { 7,3,4,6,8,9,1,5,2,10 };
int len = sizeof(arr) / sizeof(arr[0]);
bubble_sort(arr,len);
for (int i = 0;i < len;i++)
printf("%d ", arr[i]);
return 0;
}