直接插入排序

来源:互联网 发布:java中断线程的方法 编辑:程序博客网 时间:2024/04/28 16:11

直接插入排序:每趟将一个待排序的元素作为关键字,按照其关键字的大小插入到已经排好的部分序列的适当位置上,直到插入完成。

/*直接插入排序*/#include <stdio.h>    #include <stdlib.h>    #include <time.h>    #include <iostream>    #define MAX 11    void input(int num[])//产生10个随机数 1......10(MAX-1)    {        int i;         srand((unsigned)time(NULL));        for(i=1; i<MAX; i++)            num[i]=rand()%100;  //产生100以内的随机数  }    void output(int num[])    {        int i;                for(i=1; i<MAX; i++)        {            printf("%5d", num[i]);            if(0 == i%10)                printf("\n");        }        printf("\n");    }    void direct_insert_sort(int num[], int left, int right)//数组 1 10  {    int n=right-left+1;int i,j,temp;for(i=2;i<=n;++i){temp=num[i];//待插入元素j=i-1;while(j>=1&&temp<num[j])//如果待排元素之前元素大于待排元素,则后移一位{num[j+1]=num[j];--j;}num[j+1]=temp;//找到插入位置,将暂存的待排元素插入}}    void main()    {        int num[MAX];                input(num);                printf("sort before...\n");        output(num);        direct_insert_sort(num, 1, MAX-1);                printf("sort after...\n");        output(num);       std::cin.get();  }   


0 0
原创粉丝点击