1.直接插入排序
直接插入排序是一种稳定的插入排序算法,编程思想:假设待排序的数存放于数组R中,初始认定第一个元素为有序,即R[1]是有序排放的,R[2]~R[n]是无序排放的,在无序排放序列中,从i=2开始,以次将元素插入到有序序列中,生成含n个元素的有序序列。下面是在VS下实现的代码
#include<stdio.h>
#include<stdlib.h>
void insert_sort(int *arr,int n)
{
int i =0;
int j =0;
int temp = 0;
for(i =1; i< n;i++)
{
temp = arr[i];//保存下标为I的元素,
j = i -1;
while(j>=0 && temp<arr[j])
{
arr[j+1] = arr[j];//后移排好的序列
j--;
}
arr[j+1] = temp; //插入要排序的元素
}
}
void print_arry(int *arr,int len)
{
for(int i =0;i < len; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
int arr[]={7,3,1,4,6,9,12,2};
int len = sizeof(arr);
printf("before sort:\n");
print_arry(arr,len);
insert_sort(arr,len);//插入排序
print_arry(arr,len);
system("pause");
}