#include<iostream>
using namespace std;
/*
直接插入排序,利用哨兵;
最好情况时间复杂度为O(n),最差情况为O(n^2)
空间复杂度为O(1),因为采用就地排序
*/
typedef int ElemType;
bool InsertSort(ElemType A[],int n){
int i,j;
//n =sizeof(A)/sizeof(A[0]);//可以吧少引入参数n
for(i = 1;i < n;i++){ //依次将A[1]~A[n]插入前面已经排好的序列
if(A[i] < A[i-1]){ //若A[i]关键码小于其前驱,将A[i]插入有序表
int temp = A[i]; //复制为哨兵,A[0]不存放元素
for(j = i-1;j >=0 && temp < A[j];j--){ //从后往前查找待插入位置
A[j+1] = A[j]; //向后复制
}
A[j+1] = temp; //复制到插入位置
}
}
}
int main(){
int A[]={49,38,65,97,76,13,27};
InsertSort(A,7);
for(int i=0;i<7;i++){
cout<<A[i]<<" ";
}
return 0;
}
直接插入排序算法
最新推荐文章于 2024-10-21 17:44:08 发布