十大经典排序
选择排序
选择排序是一种简单直观的排序算法。它的基本思想是每次从未排序的数列中选择最小(或最大)的元素,放到已排序序列的末尾(或开头),直到全部元素排序完成。
稳定性 | 平均时间复杂度 | 空间复杂度 |
---|---|---|
不稳定 | O(n2) | O(1) |
gif动图
#include<stdio.h>
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void selection_sort(int arr[], int len)
{
int i, j;
for (i = 0; i < len - 1; i++)
{
int min = i;
for (j = i + 1; j < len; j++)
if (arr[min] > arr[j])
min = j;
swap(arr + i, arr + min);
}
}
void selection_print(int arr[],int len)
{
for(int i=0;i<len;++i)
printf("%d ",arr[i]);
}
int main()
{
int arr[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50 ,48 };
int len=15;
selection_sort(arr,len);
selection_print(arr,len);
return 0;
}