简单排序算法以及其复杂度

baike 2020-05-14

选择排序,时间复杂度 O(n^2), 下面要注意c语言传参入数组传入的是地址!,所以用sizeof求数组大小的时候,在自定义函数中求出来的sizeof(arr)就是指针的大小,为4;64位系统的话是8; 所以要在main函数中传入自定义方法给数组大小
#include <stdio.h>
#define arrSize(arr) sizeof(arr)/sizeof(arr[0])
void SelectSort(int arr[],int arrsize){
    for(int i=0;i<arrsize;i++){
        int k = i;                     //对比数组最小的下标,进行交换 
        for(int j=i;j<arrsize;j++){
            if (arr[k]>arr[j]){
                k = j;    
            }
        }
        if(k!=i){
        int temp = arr[i];
        arr[i]=arr[k];
        arr[k]=temp;    
        }
    }
}
int main(){
    int arr[] = {12,312,41,35,344,12,5};
    int arrsize = arrSize(arr); //c语言传参入数组传入的是地址! 
    SelectSort(arr,arrsize); 
    for(int i=0;i<arrsize;i++){
        printf("%d ",arr[i]);
    }
}

相关推荐