赞
踩
- #include<stdio.h>
- void bubble_sort(int arr[], int sz)
- {
- //确定冒泡排序的趟数
- int i = 0;
- for (i = 0; i < sz - 1; i++)
- {
- //每一趟冒泡排序
- int j = 0;
- for (j = 0; j < sz - 1 - i; j++)
- {
- if (arr[j]>arr[j + 1])
- {
- int tem = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = tem;
- }
- }
- }
- }
- int main()
- {
- int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
- int sz = sizeof(arr) / sizeof(arr[0]);
- int i = 0;
- //对arr进行排序,排成升序
- //arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址&arr[0]
- bubble_sort(arr,sz);//冒泡排序函数
- for (i = 0; i < sz;i++)
- {
- printf("%d ",arr[i]);
- }
- return 0;
- }
因为当你排列的数组,不需要再排列数时,此程序仍然需要进行比较,所以进行代码改进:
这个代码的关键在于flag参数的设置,以及位置,需细细思考。
- #include<stdio.h>
- 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 - 1 - i; j++)
- {
- if (arr[j]>arr[j + 1])
- {
- int tem = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = tem;
- flag = 0;//本趟数据不完全有序
- }
- }
- if (flag == 1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。