#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;
}
运行结果如下:
时间及空间复杂度分析