插入排序算法-小用
这里要写到的插入排序算法和之前使用的选择排序算法很像,但是插入排序算法的效率比之要高,因为与选择排序算法不同的是,排序的同时一旦找到比前面的小,后面的大马上终止遍历。但下面这段插入排序算法经程序验证之后,耗费时间较之选择排序算法要长,是因为找到合适的位置时需要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;
}
}

浙公网安备 33010602011771号