插入排序的算法虽然简单,但是很多时候,笔试时,往往几个简单算法,很容易让人头疼。况且,如何又简单、又快速写出代码,这个才是关键。所以,这几天重温了这几个算
法,整理了一下,方面今后查阅。
插叙算法的思路很简单,就是不断从无序区间中取出元素,插入到有序区间中去,并且不断调整有序区间。大概代码如下:
1 void SelectSort::InsertSort() //插入排序 2 { 3 int temp,j; 4 for(int i=0;i < int(SelectArry.size()-1);i++) //i代表有序区间数组第i个元素 5 { 6 j = i+1; //j代表无序区间数组第1个元素 7 if( SelectArry[j] < SelectArry[i]) //无序区间数组第1个元素比较小,需要对有序区间调整 8 { 9 temp = SelectArry[j]; //记录临时变量 10 while( i>=0 && temp < SelectArry[i]) //寻找有序区间中的插入位置 11 { 12 SelectArry[i+1] = SelectArry[i]; 13 i--; 14 } 15 SelectArry[i+1] = temp; //将无序区间的元素插入 16 } 17 i = j-1; //还原i,继续进行循环 18 } 19 20 }
由于是用类来写的,SelectArry数组封装在类中,其中SelectAtty数组的定义是vector<int>;
转载请注明出处:http://www.cnblogs.com/Su-30MKK/archive/2012/11/05/2756172.html