12-09关于几种排序方式

一.选择排序

#include <stdio.h>

//选择排序 //记录最小的那个数的索引值

//下面这个循环就是去寻找最小的那个数的index

//有比k对应的值更小的

//判断是否需要交换

//k和i对应的值交换

void selectsort(int array[],int counttimes){

    int k = 0;

    for (int i = 0; i < counttimes - 1; i++) {

        int  k = i ;

        for (int j =i +1; j < counttimes; j ++) {

            if (array[k] >array[j]) {

                k = j ;

            }

        }

        int temp;

        if (k != i) {

            temp = array[i];

            array[i] = array[k];

            array[k] = temp;

        }

    }

}

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

    int array[] = {1,25,8,22,2};

    

    selectsort(array, 5);

    

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

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

    }

    printf("\n");

    return 0;

}

二.快速排序

#include <stdio.h>

 

void quicksort(int array[],int low,int high){

    int i = low;

    int j = high;

    

    int temp = array[low];

    

    if (low < high) {

        while (i<j) {

            while (i < j&& array[j] >= temp) {

                j--;

            }

            array[i] = array[j];

            

            while (i < j && array[i] <= temp) {

                i ++;

            }

            array[j] = array[i];

                    }

        array[i] = temp;

        

        quicksort(array,0,i-1);

        

        quicksort(array,i+1,high);

    }

}

 

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

    int array[] = {3,1,9,2,8,3,7,4};

    

    quicksort(array, 0, 7);

    

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

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

    }

    printf("\n");

    return 0;

}

三.直接排序

#include <stdio.h>

 

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;

            }

        }

        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 19:50  liuzhicen  阅读(144)  评论(0编辑  收藏  举报