選擇排序:老是選出最小或者最大的放在未排序部分的第一個位置 ide
- #include <stdio.h>
- void printArr(int arr[],int length){
- int i;
- for(i=0;i<length;i++){
- printf("%d,",arr[i]);
- }
- printf("\n");
- }
- void selectionSort(int arr[],int length){
- int i,m=0,n=0,temp;//m最小元素的位置,n未排序部分的起始位置
- while(n<length){
- for(i=n;i<length;i++){
- if(arr[i] < arr[m]){//改爲大於 則是從大到小排序
- m = i;
- }
- }
- temp = arr[n];
- arr[n] = arr[m];
- arr[m] = temp;
- n++;
- m = n;
- }
- printArr(arr,length);
- }
- int main(void){
- int arr[10] = {2,23,245,12,76,12,67,213,546,12};
- printArr(arr,10);
- selectionSort(arr,10);
- }