選擇排序Linux下c 實現

2021-12-29 22:31:28 字數 3081 閱讀 6345

選擇排序,將待排序序列分為兩個序列:已排序序列和未排序序列。每次從未排序序列中,選擇乙個最小的元素,存放在到已排序序列的最後,直到所有元素排序完畢。關鍵**如下:

1、選擇排序標頭檔案:selectsort.h

[cpp]

#ifndef selectsort_h  

#define selectsort_h  

extern void selectsort(int *parr, const int length); 

#endif 

#ifndef selectsort_h

#define selectsort_h www.2cto.com

extern void selectsort(int *parr, const int length);

#endif

2、選擇排序原始檔:selectsort.c

[cpp]

#include "selectsort.h"  

void selectsort(int *parr, const int length) 

} if(min!=i) 

} } #include "selectsort.h"

void selectsort(int *parr, const int length)

}if(min!=i)

}}           3、main標頭檔案:main.h

[cpp]

#ifndef main_h  

#define main_h  

#include  

#include "selectsort.h"  

int main(void); 

void showarr(const int *parr, const int length); 

void initrandomarr(int *parr, const int length); 

#endif 

#ifndef main_h

#define main_h

#include

#include "selectsort.h"

int main(void);

void showarr(const int *parr, const int length);

void initrandomarr(int *parr, const int length);

#endif

4、main原始檔:main.c

[cpp]

#include "main.h"  

int main(void) 

int arr[length]; 

initrandomarr(arr, length); 

printf("get random array :\n"); 

showarr(arr, length); 

selectsort(arr, length); 

printf("select sort result:\n"); 

showarr(arr, length); 

return 0; 

} void showarr(const int *parr, const int length) 

printf("\n"); 

} void initrandomarr(int *parr, const int length)  } 

#include "main.h"

int main(void)

int arr[length];

initrandomarr(arr, length);

printf("get random array :\n");

showarr(arr, length);

selectsort(arr, length);

printf("select sort result:\n");

showarr(arr, length);

return 0;

}void showarr(const int *parr, const int length)

printf("\n");

}void initrandomarr(int *parr, const int length)

}              5、編譯程式:

[cpp]

[root@localhost selectsort]$ gcc -c main.c 

[root@localhost selectsort]$ gcc -c selectsort.c 

[root@localhost selectsort]$ gcc -o main main.o selectsort.o 

[root@localhost selectsort]$ gcc -c main.c

[root@localhost selectsort]$ gcc -c selectsort.c

[root@localhost selectsort]$ gcc -o main main.o selectsort.o

執行可執行檔案main,大致如下:

[cpp] 

[root@localhost selectsort]$ ./main  

input array length: 

8 get random array : 

906 968 161 208 757 885 370 691  

select sort result: 

161 208 370 691 757 885 906 968  

[root@localhost selectsort]$ ./main

input array length:

8get random array :

906 968 161 208 757 885 370 691

select sort result:

161 208 370 691 757 885 906 968

選擇排序時間複雜度о(n²), 交換次數o(n),已經有序的最好情況下,交換0次;逆序的最壞情況下,交換n-1次。 交換次數比氣泡排序少多了,由於交換所需cpu時間比比較所需的cpu時間多,n值較小時,選擇排序比氣泡排序快。

選擇排序C 實現

演算法描述 首先找到陣列中最小的元素,將它與陣列第乙個元素進行交換,接著在剩下的元素中找的最小的元素與陣列第二個元素進行交換,如此往復,直到整個陣列都排序。下面給出整型陣列的實現,其他複雜型別只需實現自定義的比較函式即可 include include using namespace std con...

C 實現選擇排序

選擇排序 selectsort 是一種簡單直觀的排序演算法。演算法原理 第一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小 大 元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元素的個數為零。選擇排序是不穩定的排序方法。...

c 實現選擇排序

說明 是我親自碼的,除錯通過的,中有演算法思想和詳細的注釋,一目了然。專案已經上傳到我的github 專案中還有另外得九種排序演算法的c 實現 以及其思想。1 選擇排序 2 插入排序 3 氣泡排序 4 希爾排序 5.1 歸併排序遞迴實現 5.2 歸併排序非遞迴實現 6.1 快速排序遞迴實現 6.2 ...