插入排序算法-小用

这里要写到的插入排序算法和之前使用的选择排序算法很像,但是插入排序算法的效率比之要高,因为与选择排序算法不同的是,排序的同时一旦找到比前面的小,后面的大马上终止遍历。但下面这段插入排序算法经程序验证之后,耗费时间较之选择排序算法要长,是因为找到合适的位置时需要swap函数置换一下位置,但swap函数运行一次需要进行三次赋值。

  未改进的插入排序算法

void insertSort(T arr, int n)
{
  cout << "yidiaoyong" << endl;
  for (int i = 1; i < n; i++)
    for (int j = i; j > 0; j--)
      if (arr[j] < arr[j-1])
        swap(arr[j], arr[j-1]);
    else
      break;
}

  改进的插入排序算法(使用模板函数) 此时改进的插入排序算法,免除了swap函数每次都需要赋值三次的问题。只需要先将需要排序的数先拷贝出来,然后与前面的进行比较,比前面的小则将前面的数往后挪,直到找到比前面的数大的时候,将之赋值在现位置。

template <typename T>

void insertSort(T arr,int n)

{

  for(int i=1;i<n;i++){

    T e=arr[i];

    int j;

    for(j=i;j>0;j--){

      if(arr[j-1]>arr[j])

        arr[j]=arr[j-1];

      else

        break;

    arr[j]=e;

  }

}

posted @ 2017-11-30 22:27  boht  阅读(145)  评论(0)    收藏  举报