排序--直接插入排序

来源:互联网 发布:江湖婚庆 3.0源码 编辑:程序博客网 时间:2024/06/11 05:09
//.........................直接插入排序/* 直接插入排序的运行时间和待排序元素的原始排列顺序密切相关, 直接插入排序的时间复杂度为O(n^2), 直接插入排序是一种稳定的排序算法。 在元素的初始排列已经按排序码排好序或接近有序时,直接插入排序速度最快。*/#if 0#include<iostream>using namespace std;#define N 10void InsertSort(int a[],int left,int right){ int i,j; int temp; for(i =left+1;i<=right;i++) //i从1开始循环  if(a[i]<a[i-1])  //和前一个元素比较大小  大的话符合条件,i++  {   temp = a[i]; //记住要插入的元素   j = i-1;   do   {    a[j+1] = a[j];    j--;   }while(j>=left&&temp<a[j]); //将比temp大的元素依次向后移动    a[j+1] = temp; //将元素插入到指定位置  }}int main(){ int a[N] ; int i; for(i = 0;i<N;i++)  cin>>a[i]; InsertSort(a,0,N-1);  //插入排序 for(i = 0;i<N;i++) {  cout<<a[i]<<" "; } cout<<endl; return 0;}#endif