每趟將一個元素,按照其關鍵字的大小插入到它前面已經排序的子序列中,依此重複,直到插入全部元素。
插入排序包括:直接插入排序、二分插入排序以及希爾排序。
//插入排序算法的實現 #include <iostream> #include <vector> #include <ctime> using namespace std; int main() { int n; cout << "請輸入將要排序的數的個數:" << endl; cin >> n; /*隨機數種子*/ srand ((unsigned) time (NULL)); /*向量數組*/ vector <int> vec; for (int i =0; i< n; i++) { vec.push_back(rand()); cout << vec[i] << endl; } clock_t start,finish; float totaltime; start = clock(); for(int j = 1;j<n;j++) { int key = vec[j]; int k = j - 1; while(k>=0 && vec[k]>key) { vec[k+1] = vec[k]; k = k-1; } vec[k+1] = key; } finish = clock(); totaltime = (float)(finish - start)/CLOCKS_PER_SEC; cout<<"插入排序之後:"<<endl; for(int i = 0; i<n; i++) { cout<<vec[i]<<endl; } cout << "\n此程序運行的時間爲:"<<totaltime <<"秒!"<<endl; }