C++模板实现直接插入排序
2017-04-18 21:58
495 查看
排序是数据结构中的重要章节.涉及到多种排序算法.本小节讲述直接插入排序的算法及实现.
直接插入排序的思想是,插入的元素插入到一个已经排列有序的数组中,从数组末尾开始进行比较,如果发现插入的数小于被比较的数,则两数交换位置,直到没有发生交换,算法终止.
算法是稳定的,时间复杂度为O(n2),空间复杂度为O(n2),内部排序,不需要额外空间.
程序运行结果如下:
直接插入排序的思想是,插入的元素插入到一个已经排列有序的数组中,从数组末尾开始进行比较,如果发现插入的数小于被比较的数,则两数交换位置,直到没有发生交换,算法终止.
算法是稳定的,时间复杂度为O(n2),空间复杂度为O(n2),内部排序,不需要额外空间.
//Dierect Insert Sort //1. Stable //2. Compare times will different as original sequence different, O(n2) //3. Move times will different as original sequence different, O(n2) //4. Terminate condition: inner loop, new value not small than compared value template<typename T> void Sort<T>::directInsertSort(T* const sortArray, const unsigned int size) { for (unsigned int i = 0; i < size; i++) { T flag = sortArray[i]; for (unsigned int j = i - 1; j >= 0; j--) { loopTimes++; if (flag < sortArray[j]) { sortArray[j + 1] = sortArray[j]; sortArray[j] = flag; moveTimes++; } else { break; } } } }
程序运行结果如下:
相关文章推荐
- C++模板实现直接插入排序
- C++模板实现直接插入排序
- c++ 模板实现 -- 直接插入排序和归并排序
- C++模板实现直接插入排序
- c++实现直接插入排序
- 直接插入排序、shell 排序、快速排序C++实现
- 直接插入排序的C++实现及随机数组的产生方法
- c++实现数据结构中的各种排序方法:直接插入、选择,归并、冒泡、快速、堆排序、shell排序
- 直接插入排序的C++实现代码
- 数据结构复习:直接插入排序与二分插入排序的C++实现
- 直接插入排序(C++模版技术实现)
- C++实现直接插入排序,折半插入排序,希尔排序,冒泡排序,简单选择排序,快速排序,堆排序
- 数据结构图文解析之:直接插入排序及其优化(二分插入排序)解析及C++实现
- 用C++实现直接插入排序
- C++实现常用排序算法(快速排序、冒泡排序、希尔排序、折半插入排序、直接插入排序)
- C++实现直接插入排序
- 插入排序——直接插入排序和希尔排序,C++代码实现
- 直接插入排序(C++实现)
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现
- mips程序设计——直接插入排序的递归与非递归实现(spim模拟)