假设从末尾插入一个数,使原来有序的数列依然有序,应该怎么办?关键是找到插入点插入新数,然后将插入点后的数字后移一位
插入排序的算法:如果末尾的数小于前一个数,则前一个数与后一个数交换。
#include <stdio.h>
#define NUM 5
void insert_sort(int a[],int n);
void main(){
int a[NUM] = {5,4,3,2,1};
insert_sort(a,NUM);
for(int i = 0; i < NUM; i++){
printf("%d",a[i]);
}
}
void insert_sort(int a[],int n){
int i,j,temp;
for(i = 1;i < n;i++){
for(j = i;j > 0; j--){
if(a[j-1] > a[j]){
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
}