1. 程式人生 > >C++實現直接插入排序

C++實現直接插入排序

#include<iostream>
using namespace std;

#define SIZE_A 9

int main(){

	void myshow(int*  p,int length);//函式提前宣告
	int list[SIZE_A]={-1,49,38,65,97,76,13,27,49};
	cout<<"排序前:"<<endl;
	myshow(list,SIZE_A);
	//直接插入排序,位置【0】為哨兵位置,真正要排序的資料在位置【1】~【length-1】
	for(int i=2;i<sizeof(list)/sizeof(int);i++){
		list[0]=list[i];//位置【0】為哨兵
		for(int j=i-1;j>=0;j--){//在前(i-1)個已排好序的區域性表中找到第i個元素的位置。
			if(list[0]<list[j]){//從右往左逐一比較,並向右移位
				list[j+1]=list[j];
			}else{
				list[j+1]=list[0];
				break;
			}
		}
	}
	
	cout<<"排序後:"<<endl;
	myshow(list,SIZE_A);
	return 0;

}
/*
description:
在標準輸出裝置上顯示陣列元素。
parameter:
int* p:指向整形陣列首元素的指標
int length:整形資料長度
*/
void myshow(int*  p,int length){
	for(int i=0;i<length;i++){
		cout<<*(p+i)<<"\t";
	}
	cout<<endl;
}

執行結果如下:

時間及空間複雜度分析