简单选择排序

选择排序时间复杂度也为O(n^2)

算法思想:

选择排序即每次length-i的长度内选择一个最小的元素,与第一个进行替换,这样大循环length次后,就可以得到排好序的数组了。

主要代码:

void selectSort(int *arr,int length){

    int i,j,k,min;

    for(i=0;i<length;i++){

        min = i;

        for(j=i+1;j<length;j++){

            if(arr[j] <arr[min])

                min = j;

        }

        if(min != i){

            k = arr[i];

            arr[i] = arr[min];

            arr[min] = k;

        }

    }

}

全部代码:

#include <stdio.h>

#include <stdlib.h>

int arrtest[10] = {3,4,7,8,0,9,1,2,6,5};

//int arrtest[10] = {0,1,2,3,4,5,6,7,8,9};

//int arrtest[10] = {9,8,7,6,5,4,3,2,1,0};

void copy(int *arr,int length);

void print(int *arr,int length);

void selectSort(int *arr,int length);

int main(){

    int Arr[10];

    copy(Arr,10);

    print(Arr,10);

    selectSort(Arr,10);

    print(Arr,10);

    getchar();

    return 0;

}

void selectSort(int *arr,int length){

    int i,j,k,min;

    for(i=0;i<length;i++){

        min = i;

        for(j=i+1;j<length;j++){

            if(arr[j] <arr[min])

                min = j;

        }

        if(min != i){

            k = arr[i];

            arr[i] = arr[min];

            arr[min] = k;

        }

    }

}

void copy(int *arr,int length){

    int i;

    for(i=0;i<length;i++){

        arr[i] = arrtest[i];

    }

}



void print(int *arr,int length){

    int i;

    for(i=0;i<length;i++){

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

    }

    printf("\n");

}
View Code

运行示例:

简单选择排序

你可能感兴趣的:(选择排序)