欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

简单选择排序(直接选择排序)

程序员文章站 2024-01-17 21:40:22
...

【分类】

 选择类排序

【基本思想】

 每一趟从待排序的数据元素中选出最小(最大)的元素,顺序放在待排序的数列最前,直到全部待排序的数据元素全部排完。

【特点】

 数据结构:数组

 稳定性:不稳定

【过程】

 初始关键字:『 852693140

 第一趟排序后:0,『526931487

 第二趟排序后:01,『26935487

 第三趟排序后:012,『6935487

 第四趟排序后:0123,『965487

 第五趟排序后:01234,『65987

 第六趟排序后:012345,『6987

 第七趟排序后:0123456,『987

 第八趟排序后:01234567,『89

 第九趟排序后:012345678,『9

 结果:           012345678

 

 

   简单选择排序(直接选择排序)       简单选择排序(直接选择排序)

   排序过程           宏观过程

 

【复杂度与辅助空间】

 最差时间复杂度:O(n^2)

 最优时间复杂度:O(n^2)

 平均时间复杂度:O(n^2)

 所需辅助空间:O(1)

【实现方法】

 双重循环,外层i控制当前序列最小(最大)值存放的数组元素位置,内层循环j控制从i+1到n序列中选择最小的元素所在位置k。

【源程序】

void select_sort()
{
	int i,j,min;
    for (i = 0; i < n - 1; i++)//i为已排序序列的末尾
	{
        min = i;
        for (j = i + 1; j < n; j++)//未排序序列
            if (a[j] < a[min])//找出未排序序列中的最小值
		    min = j;
        if (min != i)
            swap(a[i],a[min]);//放到已排序序列的末尾,该操作很有可能把稳定性打乱,所以选择排序是不稳定的排序算法
    }
}