博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组排序
阅读量:7057 次
发布时间:2019-06-28

本文共 1172 字,大约阅读时间需要 3 分钟。

排序的方法:
//方法一:sort:
1  2  3  4     
5 数组排序 6 11 12 13 14
 

 

 
//方法二:选择排序法:

思想每趟从待排序的记录中选出最小关键字,顺序放在已排序的记录序列末尾,直到全部排序结束为止。

 

流程:(1)从待排序序列中,找到关键字最小的元素;

          (2)如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;

          (3)从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。

 

示意图:

代码:
1  2  3  4     
5 数组排序 6 23 24 25 26
 

 

//方法三:冒泡排序法:
 

思想冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。

 

示意图:

代码:
1  2  3  4     
5 数组排序 6 26 27 28 29

 

 

//方法四:快速排序法:

思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以进行,以此达到整个数据变成有序。

 

流程:设要排序的是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。

一趟快速排序的算法是:
1)设置两个变量i、j, 开始的时候:i=0,j=N-1;
2)以第一个数组元素作为关键数据,赋值给
key,即
key=A[0];
3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于
key的值A[j],将A[j]和A[i]互换;
4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于
key的A[i],将A[i]和A[j]互换;
5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于
key,4中A[i]不大于
key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。

 

示意图:

 

代码:

1  2  3  4     
5 数组排序 6 58 59 60 61

 

 

转载于:https://www.cnblogs.com/miaoxiaojiao/p/7040976.html

你可能感兴趣的文章
敌兵布阵 HDU - 1166 (树状数组模板题,线段树模板题)
查看>>
5.Lvs+Keepalived健康检查
查看>>
Oracle 数据库连接操作符(||)
查看>>
/proc/net/sockstat 里的信息是什么意思?
查看>>
细说业务逻辑(前篇)
查看>>
status bar in .plist,
查看>>
作品展示(2)
查看>>
<转>如何调试makefile
查看>>
代码赏析——史丰收速算
查看>>
oracle恢复误删除表
查看>>
Navicat for MySQL常见命令
查看>>
Threading and Tasks in Chrome
查看>>
七、Maven依赖管理
查看>>
Android 学习
查看>>
工厂模式
查看>>
spring中的web上下文,spring上下文,springmvc上下文区别(超详细)(转载)
查看>>
RxSwift 对 MJRefresh 使用的封装
查看>>
leetcode 118 Pascal's Triangle
查看>>
聚美第八天
查看>>
Java基础-使用Idea进行远程调试
查看>>