冒泡法排序

来源:互联网 发布:影视app源码 编辑:程序博客网 时间:2024/06/03 23:41

冒泡法排序在刚学编程语言的时候都经常接触,当刚接触时总是很疑惑,明明感觉自己掌握了,过了一阵子感觉又不会了,其实冒泡的原理很简单,自己动手排序一次,就能体验到冒泡如何的冒泡,但数组的个数不要太多。冒泡法对一个数组进行排序,里面的数据可以有相同也有不相同,同时实现冒泡的时候用到双重循环,第一个for循环是用来控制排序要跑的趟数,比如说你的数组只有一个数据,那还用排序吗??如果N个数据那就要减去那个数据本身了,所以N个数据就要跑N-1趟,每一趟又要进行比较,第二个for是控制每一趟比较的次数,比如第一趟要比较的次数为N-1,第二趟N-2,只要理解两个for的作用容易掌握了。

#include <stdio.h>#define N 10void BubbleArr(int *a, int len)  //冒泡法排序{int i, j, temp;for(i=0; i<len-1; i++)   //比较的趟数,1个数时就不用比较,N个数就要比较N-1趟{for(j=0; j<len-1-i; j++)  //每一趟中要比较的次数{if(a[j]>a[j+1])   //当前面的那个数比后面的那个数大时交换,跑完一趟时,要比较个数就减少1个{                 //跑完一趟最后一个数就不用比较了,比较的个数也就比以前少一个了temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}}}void  PrintArr(int *a, int len) //打印数组{for(int i=0; i<len; i++){printf("%d ",a[i]);}printf("\n");}void main(){int a[N] = {1, 2, 5, 3, 7, 8, 0, 4, 6, 9};  //初始化一个数组printf("为进行排序前的数组:\n");PrintArr(a, N);printf("进行排序后的数组:\n");BubbleArr(a, N);PrintArr(a, N);}
if(a[j]>a[j+1])关系运算符可以>=或<等,看你的数据是否有相同或者升序降序。

原创粉丝点击