概述

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

我们这里说说八大排序就是内部排序。

当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。

快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

1.插入排序—直接插入排序(Straight Insertion Sort)

基本思想:

将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。

要点:设立哨兵,作为临时存储和判断数组边界之用。

直接插入排序示例:

如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序算法 1 /**

  *
* @author zhangtao
*/
public class StraightInsertionSort
{
public static void main(String[] args)
{
int arr[]={3,1,5,7,2,4,9,6};
insertSort(arr);
}
//直接插入排序
static void insertSort(int[] a)
{
int Arrlength=a.length;
for(int i= 1; i<Arrlength; i++){
if(a[i] < a[i-1]){ //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入
int j= i-1;
int temp = a[i]; //复制为哨兵,即存储待排序元素 while(temp<a[j]){ //查找在有序表的插入位置
a[j+1] = a[j];
j--; //元素后移
if(j<0)
{
break;
}
}
a[j+1] = temp; //插入到正确位置
}
printLine(a,i); //打印每趟排序的结果
}
}
//打印每次的排序结果
static void printLine(int[] arr,int i)
{
System.out.println(i+":");
int Arrlength=arr.length;
for(int j=0;j<Arrlength;j++)
{
System.out.print(arr[j]+" ");
}
System.out.println();
}
}

效率:

时间复杂度:O(n^2).

其他的插入排序有二分插入排序,2-路插入排序。

【欢迎转载】

转载请表明出处: 乐学习

最新文章

  1. 15个关于Chrome的开发必备小技巧[译]
  2. mysqldump
  3. 物理引擎-Physx的源代码去哪里找
  4. javascript 字符串总结
  5. OAF_开发系列12_实现OAF开发中URL中的标记和加密参数传递(案例)
  6. html信息提示框
  7. (转)Tomcat启动报Error listenerStart错误
  8. Debian deb源方法升级PHP软件包
  9. zip压缩与解压缩示例
  10. DSP using MATLAB 示例Example2.12
  11. s3c2440 移值u-boot-2016.03 第2篇 支持Nand flash启动
  12. css隐藏元素display:none,opacity:0;filter:alpha(opacity=0-100;,visibility:hidden的区别
  13. samba和squid 安装
  14. 40 个超棒的免费 Bootstrap HTML5 网站模板
  15. Hadoop-2.2.0中文文档—— MapReduce下一代- 可插入的 Shuffle 和 Sort
  16. HTTP必知必会(转)
  17. Python Revisited Day 06 (面向对象程序设计)
  18. Oracle课程档案,第九天
  19. 互联网同步yum服务器,中科大 rsync createrepo
  20. hadoop程序实例

热门文章

  1. Joiner
  2. Mybatis参数总结(转载)
  3. 序列化的两个模块(json和pickle)
  4. corethink功能模块探索开发(一)根据已有模块推测目录结构
  5. Java 如何读取resources
  6. 03 Spring框架 bean的属性以及bean前处理和bean后处理
  7. 反射,hashlib模块,正则匹配,冒泡,选择,插入排序
  8. 17南宁区域赛 I - Rake It In 【DFS】
  9.  Link 
  10. Scrapy安装方法