插入排序的時間複雜度最低爲O(N),最高爲O(N^2)
//插入排序(工作可能用到)實現從小到大排序
#include<stdio.h>
void swap(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
int main(){
int n,i,j;
while(~scanf("%d",&n)){
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
//思路:想象撲克牌已經排好了順序,現在末尾來了一張新的撲克牌,與前面的牌比較後最終放到合適的位置
for(i=1;i<n;i++){//這裏的i可以理解爲末尾新的撲克牌
for(j=i-1;j>=0&&a[j]>a[j+1];j--){//若末尾撲克牌i(j+1)等於1,則前面的j=0已經排好了順序,比較j+1和j的大小,如果j+1<j,則交換較小的數j+1到前面去
swap(&a[j],&a[j+1]);
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
printf("\n");
}
}
執行結果: