失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 冒泡排序算法实现数组的升序降序排列

冒泡排序算法实现数组的升序降序排列

时间:2024-02-06 07:11:29

相关推荐

冒泡排序算法实现数组的升序降序排列

冒泡排序算法:在一组无序数组中通过循环嵌套。按相邻数组元素每两项互相比较,将两者中最大值通过循环比较传递给下一个数组元素,实现在每一组冒排序中都可以讲该组数据的最大值或者最小值传递给数组的最后一个元素,从而在进行多次冒泡后该无序数列可以按由大到小或者由小到大的方式排列输出。

代码如下

void chanc_a2(int se, int arr[])//降序排列函数{int n = 0;for (n = 0;n < se - 1;n++){int flar = 0;//检索数据是否在第小于最大排列时就已经是有序数组//优化算法int j = 0;for (j = 0;j < se - 1 - n;j++){if (arr[j] <= arr[j + 1]){int str = 0;str = arr[j];arr[j] = arr[j + 1];arr[j + 1] = str;flar = 0;}}if (flar == 1){break;}}}void chanc_a(int se,int arr[])//升序排列函数{int n = 0;for (n = 0;n < se - 1;n++){int flar = 0;int j = 0;for (j = 0;j < se - 1-n;j++){if (arr[j] >= arr[j + 1]){int str = 0;str = arr[j];arr[j] = arr[j + 1];arr[j + 1] = str;flar = 0;}}if (flar == 1){break;}}}int main(){int i = 0;int arr[] = { 1,2,9,4,3,6,6,8,4, };int m = 0;int se = sizeof(arr) / sizeof(arr[0]);int f = 0;scanf_s("%d", &f);switch (f)//选择以何种方式排列该数组{case 1:chanc_a(se, arr);//升序函数break;case 2:chanc_a2(se, arr);//降序函数break;}for (i = 0;i < se;i++){printf("%d ",arr[i]);}}

优化分析:在产生一个数组时,由于默认是将数组进行升序或者降序排列。所以会忽略如果该组数据在输入时已经是有序数组的可能,所以在函数中定义flar变量,当数据经过第一次或者某一次判断后flar的返回值表示他已经是一个有序数列,即可跳出冒泡循环,节省计算量。

如果觉得《冒泡排序算法实现数组的升序降序排列》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。