插入排序

来源:互联网 发布:linux tomcat加大内存 编辑:程序博客网 时间:2024/06/05 17:18

插入排序是对少量元素进行排序的有效算法。

其工作原理与打牌类似,开始摸牌时,我们的左手是空的,一次从桌上摸起一张牌,插入到左手牌中正确的位置上。为了找到这个正确的位置,需要将它与手中已有的每一张牌从右到左进行比较。无论什么时候,左手的牌总是已经排好序的。


具体的方法是通过一个数组A[1..n],包含了n个待排序的数,这些数组在数组A中就地排序,不需要添加额外的空间。

以下是代码:

#include <stdio.h>#include <stdlib.h>#define MAX 10//对数组A进行插入排序,最大元素个数为MAXvoid Insert_Sort(int* A){    int i,j,key,temp;    for(j=1;j<MAX;j++)    {        key=A[j];        //以下是插入过程,将A[j]插入到以排好序的数组A[1..j-1]中        i=j-1;        while(i>=0&&A[i]>key)        {            temp=A[i+1];            A[i+1]=A[i];            A[i]=temp;            i=i-1;        }    }}//主函数进行测试int main(){    int count;    int A[]={4,3,6,3,2,8,90,7,6,56};    Insert_Sort(A);    for(count=0;count<MAX;count++)        printf("%d ",A[count]);    printf("\n");    return 0;}


原创粉丝点击