算法的学习 — 冒泡排序
//冒泡排序算法的思路是: //1.n个数,i每相邻的两个数作比较,外层比较n-1次,如 4个数,3,2,1,4 ->3与2比,3再与1比,3再与4比,所以是n-1次,因为从0坐标开始,最大是<n-1, //2.内层是n-i-1,因为上面2已经与3比较了,所以是n-i-1次,如2不再与之前的3比了,因为已经比了,2比1,2比4->1不和2、3比了,直接和4比。 //3.如果从小到大,第一次是2,1,3,4 (3与1,2,4比) ;第二次是1,2,3,4(1与2,4比);第三次是1,2,3,4 (4只和3比较)。 //4.最小的时间复杂度是o(n),最大的时间复杂度是o(n平方)。 //方案1,自定义一些数字,需要存储数据的数组,交换的两个数i,j ,比较n个数,用来交换的temp //->1
void bubble_sore (int a[],int n); void bubble_sore (int a[],int n){ int i,j,temp; for (i = 0; i< n-1; i++) {//从第一个元素开始 for (j = 0; j <n-1-i; j++) { if(a[j] > a[j+1]){ temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } } #include <stdio.h> #define size 10 int main(int argc, const char * argv[]) { //->2 int a[size] = {100,200,3,6,4,9,333,44,444,332}; bubble_sore(a, size); for (int i = 0; i < size; i++) { printf("%d\n",a[i]); } return 0; }
未完待续。。。。。。。。。。
将来的自己,会感谢现在不放弃的自己!