C语言冒泡排序及流程图(思路解析)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1、功能:冒泡排序输入:数组名称(也就是数组首地址)、数组中元素个数================================================*//*====================================================算法思想简单描述:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的位置k,这样可以减少外层循环扫描的次数。冒泡排序是稳定的。算法时间复杂度O(n2)--[n的平方]=====================================================*/voidbubble_sort(int*x,intn){intj,k,h,t;for(h=n-1;h0;h=k)/*循环到没有比较范围*/{for(j=0,k=0;jh;j++)/*每次预置k=0,循环扫描后更新k*/{if(*(x+j)*(x+j+1))/*大的放在后面,小的放到前面*/{t=*(x+j);*(x+j)=*(x+j+1);*(x+j+1)=t;/*完成交换*/k=j;/*保存最后下沉的位置。这样k后面的都是排序排好了的。*/}}}}2在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。下面是一种改进的冒泡算法,它记录了每一遍扫描后最后下沉数的位置k,这样可以减少外层循环扫描的次数。冒泡排序是稳定的。算法时间复杂度O(n^2)算法实现:/*功能:冒泡排序输入:数组名称(也就是数组首地址)、数组中元素个数*/voidbubble_sort(int*x,intn){intj,k,h,t;for(h=n-1;h0;h=k)/*循环到没有比较范围*/{for(j=0,k=0;jh;j++)/*每次预置k=0,循环扫描后更新k*/{if(*(x+j)*(x+j+1))/*大的放在后面,小的放到前面*/{t=*(x+j);*(x+j)=*(x+j+1);*(x+j+1)=t;/*完成交换*/k=j;/*保存最后下沉的位置。这样k后面的都是排序排好了的。*/}}}}流程图作参考

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功