您的位置:首页 >动态频道 > 精选知识 >

将20个整数按从大到小的顺序排序后输出

导读 大家好,小房来为大家解答以上的问题。将20个整数按从大到小的顺序排序后输出这个很多人还不知道,现在让我们一起来看看吧!1、数组形式。2、...

大家好,小房来为大家解答以上的问题。将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、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

本文到此分享完毕,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!