#include <stdio.h> void printArr(int arr[],int len); int main() { int arr[] = { 1,3,5,7,2,4,6,8,9,0 }; //int arr[] = { 1,1,1,3,3,5,5,2,4,7,7,7,6,6,8,9,0 };//也是可以排序的 int len = sizeof(arr) / sizeof(int); printArr(arr, len); //选择排序法 //实现原理 数组中先找出最小的,将其排在数组第一位 在余下的数中再找最小的 将其排在数组第二位 for (int i = 0; i < len - 1; i++) { int min = i; for (int j = i+1; j < len; j++) { if (arr[min] > arr[j]) { min = j; int temp = arr[i]; arr[i] = arr[min]; arr[min] = temp; } } } printArr(arr, len); //优化一下 不需要每次比较就交换两个数 而是比较完一轮后 将最小的和arr[i]交换 for (int i = 0; i < len - 1; i++) { int min = i; for (int j = i+1; j < len; j++) { int flag = min;//作为判断的标志 if (arr[flag] > arr[j]) { flag = j; } if (flag != min) { int temp = arr[flag]; arr[j] = arr[min]; arr[min] = temp; } } } printArr(arr, len); system("pause"); return 0; } void printArr(int arr[],int len) { for (int i = 0; i < len; i++) { printf("%d", arr[i]); } printf("\n"); }
原文:https://www.cnblogs.com/littlelittleprince/p/12296746.html