概念
选择法思想 :在每趟中,将最小的数挑出来
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
//选择法
void printArray(int array[], int len)
{
int i = 0;
for (i = 0; i<len; i++)
{
printf("%d\t", 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 + 1; j < len; j++)
{
if (array[j] < array[k]) //开始寻找最小元素的下标
{
k = j;
}
}
swap(array, i, k);
}
}
int main01()
{
//int array[] = {12, 5, 433, 253, 216, 7};
int array[] = { 10, 3, 20, 17, 9, 6 };
int len = sizeof(array) / sizeof(*array);
printf("排序前\n");
printArray(array, len);
SelectionSort(array, len);
printf("排序后\n");
printArray(array, len);
system("pause");
return 0;
}
复杂度分析