Zer0e's Blog

经典算法之选择排序

字数统计: 277阅读时长: 1 min
2018/05/11 Share

最近都没时间写文章,想想还是得偶尔空出点时间来写文章学习点东西。
讲讲选择排序。
选择排序和冒泡排序都是比较基本的排序算法,下面就来简单说说选择排序的实现方法。
设数组的下标为[0…n-1],i=0。刚开始整个数组都处于无序状态,在无序区中找到一个最小的数放在第i个位置,则现在[0..i]处于有序区,i++并重复步骤,直到i==n-1,则排序完成。

源码部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void selectsort(int a[],int n)
{
int i,j,MinIndex;
for(i=0;i<n;i++)
{
MinIndex = i;
for(j=i+1;j<n;k++)
{
if(a[j]<a[MinIndex])
MinIndex = j;
}
Swap(a[i],a[MinIndex]);
}
}
//Swap的实现
void Swap(int &a, int &b)
{
int c = a;
a = b;
b = c;
}

选择排序和冒泡排序的时间复杂度都是n^2,并且都是稳定的排序,但当数组长度过大时,效率反而低下。下次讲讲时间复杂度也是n^2的插入排序法。

CATALOG
  1. 1. 源码部分