冒泡排序
这次给大家分享一个C语言实现冒泡排序法
冒泡排序其实就是设计一个冒泡排序函数将一个整型数组从小到大排序.
例如一个数组arr[10] = {1,5,2,3,6,7,9,8,4,10},要想数组从小到大排序,就要让数组里面每两个相邻的元素比较,所以我们需要写一个循环进行两两比较;而这个过程又需要循环sz - 1次(sz为数组的元素个数),即冒泡的趟数,让这个比较的过程从头开始.
下面来看代码分析:
void Sort(int arr[],int sz) { //确定冒泡的趟数 int i = 0; for (i = 0; i < sz - 1; i++) { int flag = 1; //每一趟冒泡排序--确定比较的次数 int j = 0; for (j = 0; j < sz - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; flag = 0; } } if (flag == 1) break; } }
优化代码:给定一个变量flag = 1,1为假设这一趟要排序的数据已经有序;每当进入if条件就代表本趟排序的数据不完全有序,所以会将flag = 0;当某一趟数组已经有序,就不会进入if条件,即本趟数组已经有序,跳出循环,在某个程度上也提高了代码的效率.
int main() { int arr[] = {452,89,41,22,1,0,369,5,8}; int sz = sizeof(arr) / sizeof(arr[0]); //对arr进行排序,排成升序 Sort(arr,sz); //冒泡排序函数 int i = 0; for (i = 0; i < sz; i++) { printf("%d ",arr[i] ); } return 0; }