前言
冒泡排序
优化提高效率
解析都在注释里面了
void bubble_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-i-1; j++){ if(arr[j] > arr[j+1]){ flag = 0;//发⽣交换就说明,⽆序 int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } if(flag == 1)//这⼀趟没交换就说明已经有序,后续⽆序排序了 break; } } int main() { int arr[] = {3,1,7,5,8,9,0,2,4,6}; int sz = sizeof(arr)/sizeof(arr[0]); bubble_sort(arr, sz); for(i=0; i<sz; i++){ printf("%d ", arr[i]); } return 0; }
扩展同样提高效率,也可以用指针来做,思路清晰
输出结果: