標籤:
選擇排序的思路比較簡單,它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完。
選擇排序雖然實現起來比較簡單,但是效率也比較低, 為O(n2)。
C語言的代碼實現如下 :
1 //選擇排序的C語言實現 2 void selection_sort(int a[]) 3 { 4 int i , j; 5 int min = 0; 6 for(i=0; i<MAXSIZE-1; i++) 7 { 8 for(j=i; j<MAXSIZE; j++) 9 {10 if(a[j] <= a[min]) {11 min = j;12 }13 }14 swap(a, i, min);15 }16 }
一個簡單的測試案例:
#include<stdio.h>#define MAXSIZE 10void selection_sort(int a[]);void swap(int a[], int i, int j);//選擇排序的C語言實現void selection_sort(int a[]){ int i , j; int min = 0; for(i=0; i<MAXSIZE-1; i++) { for(j=i; j<MAXSIZE; j++) { if(a[j] <= a[min]) { min = j; } } swap(a, i, min); }}void swap(int a[], int i, int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp;}int main(){ int a[MAXSIZE]; int i; printf("Please input the num:\n"); for(i=0; i<MAXSIZE; i++) { scanf("%d",&a[i]); } printf("before the sort:\n"); for(i=0; i<MAXSIZE; i++) { printf("%d ", a[i]); } printf("\n"); selection_sort(a); printf("after the sort:\n"); for(i=0; i<MAXSIZE; i++) { printf("%d ", a[i]); } printf("\n");}View Code
基礎演算法之選擇排序