一个直接插入排序算法程序

来源:互联网 发布:oracle dblink mysql 编辑:程序博客网 时间:2024/06/08 11:16

直接插入排序,算法简单,程序易编制,但随着数组长度的增加,搜索时间会增加,移动的元素会增多.因此这种算法适合排序数组长度较短的情况.

初始:23,45,1,0,-45,13,1,34

1:      [23],45,1,0,-45,13,1,34

2:      [23,45],1,0,-45,13,1,34

3:      [1,23,45],0,-45,13,1,34

4:      [0,1,23,45],-45,13,1,34

5:      [-45,0,1,23,45],13,1,34

6:      [-45,0,1,13,23,45],1,34

7:      [-45,0,1,1,13,23,45],34

结束:[-45,0,1,1,13,23,34,45]

#include<stdio.h>/*直接插入排序:待插入目标数组指针,目标数组长度,待插入值*/void sort(int *buf,int length,int insert){    int i=0;    int j=length;    /*搜索目标数组,在合适元素处停下*/    for (;i<length;i++){        if (*(buf+i)>insert)            break;    }    /*将该元素以后的元素向后移动一个单位*/    while (j>i){        *(buf+j)=*(buf+j-1);        j--;    }    /*将待插值插入该元素位置处*/    *(buf+i)=insert;}int main(void){    int buf[]={23,45,1,0,-45,13,1,34};    int i=1;    for (;i<sizeof(buf)/sizeof(int);i++){        sort(buf,i,buf[i]);    }    for (i=0;i<sizeof(buf)/sizeof(int);i++)        printf("%d,",buf[i]);}


0 0
原创粉丝点击