C語言 選擇排序
對一般陣列:
#include<stdio.h> #include<string.h> #include<stdlib.h>
void selectSort01(int arr[],int len) { for(int i = 0;i < len;i++) { int min = i; for(int j = i+1;j < len;j++) { if(arr[min]>arr[j]) { min = j; } } if(min != i) { int temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } }
void printArray01(int arr[],int len) { for(int i = 0;i < len;i++) printf("%d\n",arr[i]); }
//選擇排序 實現陣列從小到大排序 void test01() { int arr[5]={1,2,3,4,5}; int len = sizeof(arr)/sizeof(int); selectSort01(arr,len); printArray01(arr,len); }
對指標陣列:
void selectArray02(char **pArr,int len) { for(int i = 0;i < len;i++) { int max =i; for(int j = i+1;j < len;j++) { //if(pArr[max]>pArr[j]) if(strcmp(pArr[max],pArr[j]) < 0) //第一個字串比第二個小 { max = j; } } if(max != i) { char * temp = pArr[max]; pArr[max] =pArr[i]; pArr[i] = temp; } } }
void printArray02(char *arr[],int len) { for(int i = 0;i < len;i++) printf("%s\n",arr[i]); }
//選擇排序 對指標陣列進行從大到小排序 void test02() { char* pArr[]={"aaa","bbb","ccc","ddd","eee","fff"}; int len = sizeof(pArr)/sizeof(char*); selectArray02(pArr,len); printArray02(pArr,len); }
在主函式中呼叫函式test01或test02即可。。。