Chapter 2-InsertionSort
来源:互联网 发布:罗盘软件 编辑:程序博客网 时间:2024/05/16 07:22
Please indicate the source if you want to reprint: http://blog.csdn.net/gaoxiangnumber1.
插入排序(Insertion Sort)的基本思想是:每次将一个待排序的元素,按其大小插入到前面已经排好序的子序列中的适当位置,直到全部元素插入完成为止。
设数组为a[0…n-1]。
1.初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1。
2.将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。
3.i++并重复第二步直到i==n-1。排序完成。
Time Complexity: O(n2)
Space Complexity: O(1)
InsertionSort.cc
#include<iostream>using namespace std;template<typename T>void InsertionSort(T sort_array[], int length);int main(){ int test_array1[10] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}; int test_array2[9] = {5, 0, -99, 3, 56, 7, 8, -55, 56}; int test_array3[10] = {-1, -8, 50, 4, 20, 0, 45, 9999, 520, 555555}; InsertionSort(test_array1, 10); InsertionSort(test_array2, 9); InsertionSort(test_array3, 10); cout << "test_array1:\n"; for(int index = 0; index < 10; index++) { cout << test_array1[index] << " "; } cout << "\ntest_array2:\n"; for(int index = 0; index < 9; index++) { cout << test_array2[index] << " "; } cout << "\ntest_array3:\n"; for(int index = 0; index < 10; index++) { cout << test_array3[index] << " "; } cout << endl; return 0;}template<typename T>void InsertionSort(T sort_array[], int length){ // sort_index is the index of element that we want to insert now // sort_array[0] is automatically sorted, so sort_index begins from 1 for(int sort_index = 1; sort_index < length; sort_index++) { // store element in key T key = sort_array[sort_index]; // compare from end to front only use 1 loop: move elements and // find proper position to insert key concurrently. Because when we can't move // elements, we find the proper position. // Otherwise compare from front to end use 2 loops: find the proper position // in one loop; and move elements in the other loop. int compare_index = sort_index - 1; // compare from end to front while(compare_index >= 0 && sort_array[compare_index] > key) // if key is smaller than some elements in the front-sorted-array, then move { // we assume sort_array[compare_index + 1] = key before moving sort_array[compare_index + 1] = sort_array[compare_index]; compare_index--; // continue } // when we can't move elements, we find the proper position to insert key. sort_array[compare_index + 1] = key; }}
Please indicate the source if you want to reprint: http://blog.csdn.net/gaoxiangnumber1.
0 0
- Chapter 2-InsertionSort
- InsertionSort
- InsertionSort
- insertionsort
- InsertionSort
- Insertionsort
- insertionSort
- InsertionSort
- insertionSort debug
- Chapter 2
- chapter 2
- Chapter 2
- Chapter 2
- chapter 2
- chapter 2
- Chapter 2
- Chapter 2
- Chapter 2
- 浅谈Flag模式
- POJ3974 Palindrome(Manacher)
- 基于SIFT特征的图像配准(附Matlab源代码)
- leetcode之Sliding Window Maximum
- Genymotion常见问题的解决方法
- Chapter 2-InsertionSort
- 删除ScrollView中的Item时,要注意的一个问题
- 关于信号函数处理过程中对信号的屏蔽理解。
- iOS引导页不滑动N秒自动跳转的实现
- 关于easyui中的combogrid keyHanlder属性使用的问题(filter改进)
- Chapter 3-07
- Chapter 3-08
- N-Queen Problem
- c语言 -> 条件控制 / if / switch / for