插入排序实现

算法原理:将待排序的数组分为:有序区 和 无序区。然后每次从无序区取出第一个数据插入到有序区的正确位置,最终完成排序。
算法代码:

#include <iostream>

 using namespace std;

 void insert_sort(int *arr,int n)
 {
     int i,j;
     for(i = 1 ; i < n ; ++i)
     {
         int tmp = arr[i];
         j = i - 1;
         while( j >= 0 && arr[j] > tmp)
         {
             arr[j+1] = arr[j];
             j--;
         }
         arr[j+1]  = tmp;
     }
 }

 int main()
 {
     int arr[] = {2,4,1,3,5,8,7,6,8};
     insert_sort(arr,9);
     for(int i = 0  ; i < 9 ; ++i)
     {
         cout<<arr[i]<<" ";
     }
     cout<<endl;
     return 0;
 }

小结:看代码可以知道这种排序算 法的时间复杂度是O(n^2),并且插入排序时稳定的,属于原地排序。那么什么时候使用插入排序比较好呢?那就是当数组中的大部分数据已经有序时,使用插 入排序算法的效率比较高,这种情况下,所需要进行的数据移动较少,而数据移动正式插入排序算法的主要步骤~~~~

 

上一篇:参加了iDOF2016会议,发表演讲“油田SOA与云平台的系统思考与实践”


下一篇:C#粘贴复制数据库中的内容