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