插入排序
- 真言
付出才会有收获,不播种何来的粮食。我是一个地地道道的写程序的农民。
- 引言
计划很重要,推崇一个软件给大家,BaPim。
- 思路
每次在排好序的数据集合中,插入一个数据,并放入到合适位置,使之有序。直至所有数据都有序即可。时间复杂度O(n*n)空间复杂度O(1)举个例子,看图如下,源数据如下
红色框内的数据是排好序的,每次都插入排好序数据后面的一个数据
over!!!
- 实验
这个算法的费时几乎和选择排序是一样一样的
- 代码
test.cpp#include<iostream> #include<Windows.h> #include<ctime> using namespace std; // declare data length size const int size = 100000; // function declare template <class T> void Insert_sort(T * data,const int length); int main() { DWORD S,E; int * data = new int[size]; for(int i =0 ; i<size; i++) { data[i] = rand(); } cout<<"data initialize over"<<endl; S = GetTickCount(); Insert_sort(data,size); E = GetTickCount(); //for(int i =0 ; i<size; i++) //{ // cout<<data[i]<<endl; //} cout<<endl<<"给"<<size<<"个数据插入排序,费时"<<E-S<<"毫秒"<<endl; system("pause"); return 0; } // function defined to insert sort template <class T> void Insert_sort(T * data,const int length) { if(data != NULL && length>0) { T d ; for(int i = 1;i<length;i++) { for(int j = i;j>0;j--) { if( data[j-1] > data[j] ) { d = data[j]; data[j] = data[j-1]; data[j-1] = d; } else break; } } } else { cout<<"exception of input Insert_sort"<<endl; } }