[算法入門]C語言實現選擇排序

#include "conf.h"

int main(){
    int     i;
    int     j;
    int     min = 0;
    int     data[COUNT] = {0};

    noticeNumber();
    scan(data);

    for(i=0; i<COUNT-1; i++){
        min = i;
        for(j=i+1; j<COUNT; j++){
            if(data[min]>data[j]){
                min = j;
            }
        }
        if(min!=i){
            swap(&data[i], &data[min]);
        }
    }
    printResult(data);
}

conf.h

#include <stdio.h>
#define COUNT   5 // The number of the numbers
#define FALSE   0
#define TRUE    1
typedef int     BOOL;

/* Print the information that user should input how many number */
void noticeNumber(){
    printf("please input %d number\n", COUNT);
}

/* get the series that need sort*/
void scan(int *data){
    int i;

    for(i=0; i<COUNT; i++){
        scanf("%d", data+i);
    }
}

/*print the result */
int printResult(int *data){
    int i;

    printf("The result is:\n");
    for(i=0; i<COUNT; i++){
        printf("%d ", data[i]);
    }

    printf("\n");
}

/* Swap two sort */
int swap(int *number1, int *number2){
                int temp = 0;

                if(*number1<=*number2)
                                return 0;
                else{
                                temp = *number1;
                                *number1 = *number2;
                                *number2 = temp;
                }
}

時間複雜度

最壞情況下會執行(n-1+1)*(n-1)/2次比較,所以最壞時間複雜度是O(n2)。
最壞其境況下會進行n-1次交換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章