将20个整数按从大到小的顺序排序后输出
大家好,小房来为大家解答以上的问题。将20个整数按从大到小的顺序排序后输出这个很多人还不知道,现在让我们一起来看看吧!
1、数组形式。
2、解题思路: 判断比较的躺数,每趟相邻的两个数再进行比较,应用两次 for 循环具体代码:void PrintArr(int* arr, int sz){int i = 0;for (i = 0; i < sz; i++){printf("%d ", *(arr + i));} return 0;}void BubbleSort(int arr[],int sz){int i = 0;for (i = 0; i < sz - 1; i++){int j = 0;for (j = 0; j arr[j + 1]){int tmp = arr[j];arr[j] = arr[j+1];arr[j + 1] = tmp;}}}}int main(){int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };int sz = sizeof(arr) / sizeof(arr[0]);BubbleSort(arr, sz);PrintArr(arr, sz);system("pause");return 0;}2、指针形式。
3、创建两个变量start、end,记住数组起始与结束位置元素的地址,应用两次 while 循环交换地址指针冒泡排序 :void PrintArr(int* arr, int sz){int i = 0;for (i = 0; i < sz; i++){printf("%d ", *(arr + i));} return 0;}void BubbleSort(int *arr, int sz){int start = arr;int end = arr + sz - 1;//趟数while (start < end){int *cur = start;while (cur *(cur+1)){int tmp = *cur;*cur = *(cur + 1);*(cur + 1) = tmp;}cur++;}end--;}}int main(){int arr[10] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };int sz = sizeof(arr) / sizeof(arr[0]);BubbleSort(arr, sz);PrintArr(arr, sz);system("pause");return 0;}扩展资料:算法原理冒泡排序算法的原理如下:比较相邻的元素。
4、如果第一个比第二个大,就交换他们两个。
5、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。
6、在这一点,最后的元素应该会是最大的数。
7、针对所有的元素重复以上的步骤,除了最后一个。
8、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
本文到此分享完毕,希望对大家有所帮助。