总结近期所学的几种排序方法的基本思想
2015-06-17 12:56
330 查看
最近学习了几种排序方法,现在总结一下这些排序方法的基本思想。
1.直接插入排序
假设i-1个元素已经有序,将第i个元素的关键字与前i-1个元素的关键字进行比较,找到合适的位置,将第i个元素插入。按照类似的方法,将剩下的元素依次插入到已经有序的序列中,完成插入排序。
2.折半插入排序
由于插入排序算法的基本思想是将待排序元素插入到已经有序的元素序列的正确位置,因此,在查找插入位置时,可以采用折半查找的算法思想寻找插入位置。
3.2-路插入排序
2-路插入排序是在折半插入排序的基础上再改进的,目的是减少排序过程中移动记录的次数,但为此需要n个记录的辅助空间。
4.希尔排序
通过将待排序的元素分为若干个子序列,利用直接插入排序思想对子序列进行排序。然后将该子序列缩小,接着对子序列进行直接插入排序。按照这种思想,直到所有元素都按照关键字有序排列。
5.简单选择排序
假设待排序的元素序列有n个,第一趟排序经过n-1次比较,从n个元素序列中选择关键字最小的元素,并将其放在元素序列的最前面,即第一个位置。第二趟排序从剩余的n-1个元素中,经过n-2次比较,选择关键字最小的元素,将其放在第二个位置。依次类推,直到没有待比较的元素,简单选择排序算法结束。
6.冒泡排序和快速排序的主要区别:冒泡排序通过比较两个相邻的元素,如果存在逆序,则进行交换;而快速排序是选定一个枢轴元素作为参考点,通过依次将元素序列中的关键字与枢轴元素的关键字进行比较,如果逆序,则进行交换,从而实现排序。
1.直接插入排序
假设i-1个元素已经有序,将第i个元素的关键字与前i-1个元素的关键字进行比较,找到合适的位置,将第i个元素插入。按照类似的方法,将剩下的元素依次插入到已经有序的序列中,完成插入排序。
2.折半插入排序
由于插入排序算法的基本思想是将待排序元素插入到已经有序的元素序列的正确位置,因此,在查找插入位置时,可以采用折半查找的算法思想寻找插入位置。
3.2-路插入排序
2-路插入排序是在折半插入排序的基础上再改进的,目的是减少排序过程中移动记录的次数,但为此需要n个记录的辅助空间。
4.希尔排序
通过将待排序的元素分为若干个子序列,利用直接插入排序思想对子序列进行排序。然后将该子序列缩小,接着对子序列进行直接插入排序。按照这种思想,直到所有元素都按照关键字有序排列。
5.简单选择排序
假设待排序的元素序列有n个,第一趟排序经过n-1次比较,从n个元素序列中选择关键字最小的元素,并将其放在元素序列的最前面,即第一个位置。第二趟排序从剩余的n-1个元素中,经过n-2次比较,选择关键字最小的元素,将其放在第二个位置。依次类推,直到没有待比较的元素,简单选择排序算法结束。
6.冒泡排序和快速排序的主要区别:冒泡排序通过比较两个相邻的元素,如果存在逆序,则进行交换;而快速排序是选定一个枢轴元素作为参考点,通过依次将元素序列中的关键字与枢轴元素的关键字进行比较,如果逆序,则进行交换,从而实现排序。
相关文章推荐
- 不能说的秘密:UEditor和UltraEdit
- Scrapinghub | Professional Services
- js查看对象内容
- 软件代码数字签名基本原理
- markdown常用格式一览
- 头部图片可伸缩的TableView
- Ubuntu下安装Mysql并使用
- 解决FLASH遮住层的问题 IE,Firefox都适用!
- myeclipse内存溢出
- IBM Juices Hadoop With Java On Tesla GPUs
- Error Correction
- atoi() & itoa()函数的内部的实现
- Linux开机自启动
- JDK自带VM分析工具jps,jstat,jmap,jconsole
- 云计算驱动智慧城市发展
- 【javaweb】左边选择右边展现的tld
- JAVA语法基础之函数的使用说明
- 精确度问题
- Linux命令查询
- BDC的执行模式与更新模式