码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序

时间:2018-04-21 14:23:18      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:方法   交换   数组元素   amp   lse   ++   条件   运行时间   code   

插入排序

实现原理:

插入排序是在插入的过程中,逐渐将范围不断扩大的排序方法,例如先从数组下标为1的元素开始,比较1所在的元素和0所在元素的大小。如果满足条件(按升序排列)就把1和0位置所在的元素元素进行交换,第一次比较结束。然后从2开始,先是2和1比较,满足就交换,不满足就不变,再是1和0比较,再重复之前的过程,第二次比较结束。然后从3一直到N-1。从这块我们可以看到,插入排序是将有序的范围逐渐扩大,也就是说当每一次比较结束时,前面的已经排好序了。

主要代码如下:

 

 1 /*bool sort(int n) {//插入排序
 2   for (int i = 1;i < n;i++) 
 3    for (int j = i;j > 0 && compare(j, j - 1);j--) 
 4     exchange(j, j - 1);
 5   return true;
 6  }*/
 7 //---------------------------------------------
 8 /*bool Sort::compare(int i, int j) {//比较两个数组元素大小
 9  return a[i] < a[j] ? true : false;
10 }*/
11 //----------------------------------------------
12 /*bool Sort::exchange(int i,int j) {//交换两个数组元素的位置
13  int tmp = 0;
14  tmp = a[i];
15  a[i] = a[j];
16  a[j] = tmp;
17  return true;
18 }*/

 

插入排序代分析:

对于大部分有序的数组而言,使用插入排序是比较好的选择。因为如果大部分有序的话,交换的次数就会非常少,最好情况(数组已有序)比较次数为N-1交换次数为0。所以就会非常节省运行时间。最坏情况就是数组是逆序的,比较次数为N*N-1,交换次数为N*N-1。

 

插入排序

标签:方法   交换   数组元素   amp   lse   ++   条件   运行时间   code   

原文地址:https://www.cnblogs.com/sunlxp/p/8900742.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!