算法与数据结构--插入排序(InsertSort)
2017-01-25 21:38
281 查看
1.算法思想:从数组的第二个元素开始依次与前面的前面的元素进行比较,若比前一个元素小,则交换位置。直到不小于前一个元素为止。
2.算法实现:
4.改进:改进思想,一次swap交换是三次赋值,如果在比较的过程中只把当前比较的数值拷贝一个副本,而不着急交换的话会节省大量的时间,代码如下for(int i = 1;i < n;i++)
T e = arr[i];
int j; //j保存元素e应该插入的位置
for(j = i;j > 0 && arr[j-1] > e;j--)
arr[j] = arr[j-1];
arr[j] = e;
2.算法实现:
for(int i = 1; i++ ;i <n) for(int j = i; j > 0 && arr[j] < arr[j-1] ;j--) swap(arr[j],arr[j-1])3.要点:插入排序在最差的情况下时间复杂度是n2,可内层循环可提前结束,因为对于基本有序的数组进行排序的话,插入排序的效果还是挺好的。
4.改进:改进思想,一次swap交换是三次赋值,如果在比较的过程中只把当前比较的数值拷贝一个副本,而不着急交换的话会节省大量的时间,代码如下for(int i = 1;i < n;i++)
T e = arr[i];
int j; //j保存元素e应该插入的位置
for(j = i;j > 0 && arr[j-1] > e;j--)
arr[j] = arr[j-1];
arr[j] = e;
这样就会节省很多次交换所花费的时间,试想若对一个完全有序的数组排序,则内层循环均会提前终止,时间复杂度相当低
相关文章推荐
- 【算法】插入排序 insert sort algorithm
- 插入排序(insert_sort)与 并归排序(merge_sort) 算法分析
- 算法----插入排序(insert sort)
- 数据算法之插入排序(insertSort)的Java实现
- 数据算法之插入排序(insertSort)的Java实现
- 算法学习----->Insertsort(插入排序)
- 数据结构与算法——插入排序以及C++函数模板实现
- Python 数据结构与算法——插入排序(insertion sort)
- 算法不会,尚能饭否之排序——直接插入排序(Insert sort)
- 插入排序(Insert Sort)
- [数据结构和算法]插入排序
- 算法学习记录-排序——插入排序(Insertion Sort)
- 数据算法之折半插入排序(binInsertSort)的Java实现
- 【数据结构】中的插入(InsertSort)排序
- 【DS】排序算法之插入排序(Insertion Sort)
- 插入排序(insert sort)
- 插入排序(Insert_Sort)
- 算法从排序开始——插入排序(Insertion Sort)C语言及Java实现
- 无聊写排序之 ---- 插入排序(insert Sort)
- 一步一步复习数据结构和算法基础-插入排序(2)