[算法] c++實現 簡單的插入排序

基本思想:

  把n個待排序的元素看成一個有序表和一個無序表,開始時有序表中只有一個元素,無序表中有n-1個元素;排序過程即每次從無序表中取出第一個元素,將它插入到有序表中,使之成爲新的有序表,重複n-1次完成整個排序過程

以下是c++代碼實現

#include <iostream>
using namespace std;

int main(int argc, char** argv) {
	int i,j,temp;
	int a_Chaos[] = {53,13,34,6,95,31,19,77,99,29};
	int len = sizeof(a_Chaos)/sizeof(a_Chaos[0]);
	//這邊注意從下標1開始 
	for(i=1; i<len; i++){
		//假如i的小於i-1的值,那就要繼續和之前已經排序的數值進行對比 
		if(a_Chaos[i] < a_Chaos[i-1]){
			//保存a[i]的值用於交換 
			temp = a_Chaos[i];
			//繼續和0~i-1之前的排序過的值進行比對,注意循環條件 
			for(j=i-1; j>=0 && a_Chaos[j]>temp; j--){
				//向後移動數值,給temp空出一位置來 
				a_Chaos[j+1] = a_Chaos[j];
			}
			//j+1(爲什麼要j+1?因爲上面for循環後先執行了j--,後再判斷條件)
			//用於放的是最小的值temp
			a_Chaos[j+1]=temp;
		}
	}
	
	//輸出結果 
	for(i=0; i<len; i++){
		cout<<"a_Chaos["<<i<<"]的值是 "<<a_Chaos[i]<<endl;
	}
	return 0;
}


 

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