插入排序

      最近把學習《算法導論》加到了自己的學習計劃,開篇第二章寫的插入排序是基礎的排序算法,其設計技術使用了增量方法,接下來歇息一下自己對插入排序的理解。

     下面的代碼是對一維數組進行插入排序,時間複雜度爲O(n²),空間複雜度爲O(1);對一維數組的插入排序,其目的是將給定的一組數字進行排序,使其按照順序排列。我們可以從數組中的第二個數字作爲插入值開始進行排序,首先比較插入值(也就是第二個數字)和其之前的數(第一個數字),插入值較小,就將第一個數字放在插入值的位置,此時第一個位置是空的,前邊沒有需要比較的數字,則第一個位置就是插入值的位置;之後將第三個數字作爲插入值,開始新一輪的比較,一直循環比較到最後一個數字,結束。


#include<iostream>
using namespace std;
int main()
{
	int key,j;				//key是未進行排序的值 
	int a[5]={5,2,4,1,3};			//初始化整數類型的數組a 
	for(int i=1;i<5;i++) 			//開始排序 
	{
		key=a[i];
		j=i-1;
		while(j>=0 && a[j]>key)		//將較大的值往右邊移位 
		{
			a[j+1]=a[j];
			j--;
		} 
		a[j+1]=key;					//j+1即是key值應該插入的位置 
	}
	for(int i=0;i<5;i++)			//遍歷數組 
	{
		cout<<a[i]<<",";		
	}	
	cout<<endl;						//換行 
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章