用隨機數實現插入排序算法,並計算程序運行時間

插入排序

  • 插入排序算法是一種就地算法(空間用量是一個常數)
  • 我們希望排序的數也稱爲關鍵詞(key),也就是說對一系列 key 進行排序。
  • 輸入是以一個數組表示的。
  • 相對於歸併排序來說,該算法對小規模數據的效率比較高。

插入排序算法思想:

每趟將一個元素,按照其關鍵字的大小插入到它前面已經排序的子序列中,依此重複,直到插入全部元素。
插入排序包括:直接插入排序、二分插入排序以及希爾排序。

插入排序的代碼實現

//插入排序算法的實現
#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;
	
}

插入排序n的數量和程序運行時間的關係

在這裏插入圖片描述