排序二:选择排序
基本思想:
每一趟(例如第i趟,i=0,1,2,...,n-2)在后面 n-i 个待排序的数据元素中选出关键字最小的元素,作为有序元素序列的第 i 个元素。
#include <stdio.h> void println(int array[], int len) { int i = 0; for (i = 0; i < len; i++) { printf("array[%d] = %d\n", i, array[i]); } printf("\n"); } void swap(int array[], int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } void SelectionSort(int array[], int len) // O(n*n) { int i = 0; int j = 0; int k = -1; for (i = 0; i < len; i++) { k = i; for (j = i; j < len; j++) { if (array[k] > array[j) { k = j; } } swap(array, i, k); } } int int main(int argc, char const *argv[]) { int array[] = {21, 25, 49, 25, 16, 8}; int len = sizeof(array) / sizeof(*array); SelectionSort(array, len); println(array, len); return 0; }