C语言 谁能讲解一下选择排序法以及有效排序。

Python010

C语言 谁能讲解一下选择排序法以及有效排序。,第1张

用[4,1,3,2]作例子吧

(1)找出最小元素-----(4,1),即用4和1比较,是有效排序,比较结果是1比较小,因此1再和3,2比较,(1,3),(1,2)这两次比较就不是有效比较了(1在3,2前面且比它们小)

因此第一轮排序为[1,4,3,2]

最小元素和第一个元素互换

(2)在剩余序列中继续找最小的元素(即排除了1)-----(4,3)比较,是有效排序。3比较小,因此3再和2比较,(3,2)是有效排序。找出最小的元素2。

第二轮排序为[1,2,3,4]

2和第二个元素4互换

(3)依次类推,(3,4)不是有效排序了。

因此,最后结果为[1,2,3,4]

有效排序为(4,1)

(4,3)

(3,2)

程序这东西要自己想,况且这个应该挺容易想出来的。。。。

选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

选择排序(Selection sort)是一种简单直观的排序算法。工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

以下是一个实现选择排序的例子:

#define SWAP(x, y, t)  ((t) = (x), (x) = (y), (y) = (t))

 //将list中的n个数据,通过选择排序算法排序。

void selete_sort(int list[], int n)

{

    int i, j, min, temp

    for (i = 0 i < n - 1 i++){

        min = i

        for (j = i + 1 j < n j++)//找出最小元素的下标。

            if (list[j] < list[min])

                min = j

        SWAP(list[i], list[min], temp)//交换最小元素到当前起始位置。

    }

}