给定任意n个整数,按由大到小排序,并输出结果

恶魔蓝晶泪
阅读

给定任意n个整数,按由大到小排序,并输出结果

您好,蔡蔡就为大家解答关于给定任意n个整数,按由大到小排序,并输出结果相信很多小伙伴还不知道,现在让我们一起来看看吧!

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 < sz - i - 1; j++)//用for循环的元素个数控住多少趟{if (arr[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 < end){if (*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、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

本文就讲到这里,希望大家会喜欢。

阅读
本文由用户上传,如有侵权请联系删除!

撰写回复
更多知识