一、排序算法
1. 冒泡排序
#include <stdio.h>
void bubble_sort(int arr[], int len) {
int i, j, temp;
//j<len-1-i的理解:
/*冒泡百排序就是把最大(最小)的放在前(后)面,那么后面的数据肯定已经排好了,不用再比较了,循环一次,排好一个数,那么再次循环的时候就把需要比较的长度-1,也就是-i。
如:
原排列987654321
第一次876543219 比较次数9-1-0,两两比较,全部比
第二次765432189 比较的次数是9-1-1,最后一个不用比
第三次654321789 比较次数9-1-2,89不用比
...*/
for (i = 0; i < len - 1; i++)
for (j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
int main() {
int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
//c语言求数组长度的方法,参考链接:http://c.biancheng.net/view/186.html
int len = sizeof(arr) / sizeof(arr[0]);
printf("arr len is %d\n",len);
bubble_sort(arr, len);
int i;
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
return 0;
}