#include <stdio.h>#include <stdlib.h>int lists[5] = { 4,3,1,2,5 };void selection_sort(int arr[], int len);int main(){printf("\n\n排序之前的样子是这样的:");for (int i = 0; i < 5; i++)printf("%d", lists[i]);selection_sort(lists, 5);printf("\n\n排序之后的样子是这样的:");for (int i = 0; i < 5; i++)printf("%d", lists[i]);return 0;}void selection_sort(int arr[], int len){int i, j, min, temp;for (i = 0; i < len - 1; i++){min = i; //指定最小点从左边开始for (j = i + 1; j < len; j++){if (arr[min] > arr[j]) //未排序中存在比最小点小的min = j; //找到最小值}if (min != i) //交换一下最小值和第一个值{temp = arr[min];arr[min] = arr[i];arr[i] = temp;printf("\n\n ---这次:%d找到的最小值是:%d---", i,temp);}printf("\n第%d次循环得到的数组的样子是:",i);for (int i = 0; i < len; i++)printf("%d", arr[i]);}}
排序之前的样子是这样的:43125---这次:0找到的最小值是:1---第0次循环得到的数组的样子是:13425---这次:1找到的最小值是:2---第1次循环得到的数组的样子是:12435---这次:2找到的最小值是:3---第2次循环得到的数组的样子是:12345第3次循环得到的数组的样子是:12345排序之后的样子是这样的:12345请按任意键继续. . .
原文:http://www.cnblogs.com/kongchung/p/6063809.html