搜索

c语言编程。。。输入一数组按从大到小的顺序排列(提示:可用选择

gecimao 发表于 2019-07-15 02:03 | 查看: | 回复:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  以整形数组元素为例,有数组A[10](以C语言为例描述),即A[0],A[1],…,A[8],A[9](假设其元素均互不相同)。要求对其元素排序使之递增有序。

  首先以一个元素为基准,从一个方向开始扫描,比如从左至右扫描,以A[0]为基准。

  然后将基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。

  一直进行到基准位置移到数组最后一个元素时排序结束(此时基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。

  int i,j,k,temp; // i 为基准位置,j 为当前被扫描元素位置,k 用于暂存出现的较小的元素的位置

  其实现相对简单,效率比较低,时间复杂度为O(n2) (n 的平方) ,为就地排序。

  冒泡排序法:基本思路:对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有 n 个元素,那么一共要进行 n-1 轮比较,第 i 轮要进行 j=n-i 次比较。(如:有5个元素,则要进行5-1轮比较。第3轮则要进行5-3次比较)

  C语言中的排序方法选择方法是首先从要选择的数中选择最大(或最小)的数,将它放在第一个位置,然后从剩下的数中选择最大(或最小)的数放在第二个位置,直到最后从剩下的两个数中选择最大(或最小)的数放在倒数第二个位置,剩下的一个数放在最后位置,完成排序。

  一个一个的进行比较,设一个min,并把第一个值赋给它,当遇到比他小的数的时候进行互换,直到最后。

本文链接:http://baumseelen.com/duipaixu/671.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部