排序算法之简单排序方法
排序的概念:是按照非递减或递增 顺序对一组记录重新进行整队的操作,排序的方法有很多,包括(简单选择排序,直接插入排序,起泡排序)当然也有先进的排序方法包括(归并排序,快速排序,堆排序,基数排序)今天主要分享一下简单排序。包括(直接插入排序,折半插入排序,希尔排序)
直接插入排序
- 插入排序的基本思想:在一个已经排好顺序的子集的基础上,每一步将下一个待排序的记录有序的插入到已经排好的顺序中,直到所有待排全部插入。
- 算法的实现,c语言代码。
void InsertSort(int a[],int n){
int i,j,temp;
for(i=2;i<n;i++) //将各元素插入到已排好序列
if(a[i]<a[i-1]){
//a[i]小于前驱
temp=a[i]; //temp暂存a[i]
for(j=i-1;j>=0&&a[j]>temp;j--){
//检查前面已经排好的
a[j+1]=a[j]; //大于temp的元素向后面挪
}
a[j+1]=temp; //复制到插入位置
}
return;
}
void Printarr(int a[],int n) //输出数组
{
int i;
for(i=0;i<n;i++){
printf("%d",a[i]);
}