1209.2——直接插入排序算法

#include <stdio.h>

 

//直接插入排序 5,4,6,2,1

//4 5 6

//6

void insertSort(int array[], int elementNum){

    int referenceNum = 0;//保存即将插入的那个值

    

    for (int i = 1; i < elementNum; i++) {

        referenceNum = array[i];

        

        int j = i - 1;

        //通过一个循环查找这个值应该插在哪个位置

        for (; j >= 0; j--) {

            if (array[j] > referenceNum) {

                array[j+1] = array[j];

            } else{

                //说明找到要插入的位置了

                break;

            }

        }

        

        //1.根本就没有移动

        //2.已经移动过了

        if (j+1 != i) {

            //动过了

            array[j+1] = referenceNum;

        }

    }

}

 

int main(int argc, const char * argv[]) {

    int array[] = {5,4,6,2,1};

    

    insertSort(array, 5);

    

    for (int i = 0; i < 5; i++) {

        printf("%d ", array[i]);

    }

    printf("\n");

    return 0;

}

 

posted @ 2015-12-09 15:39  王权  阅读(128)  评论(0编辑  收藏  举报