`

排序算法之选择排序

阅读更多

选择排序 (Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。


选择排序的交换操作 介于0(n − 1) 次之间。选择排序的比较操作n (n − 1) / 2 次之间。选择排序的赋值操作 介于03(n − 1) 次之间。

比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N=(n-1)+(n-2)+...+1=n*(n-1)/2。 交换次数O(n),最好情况是,已经有序,交换0次;最坏情况是,逆序,交换n-1次。 交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CPU时间多,n值较小时,选择排序比冒泡排序快。


实例代码:

// selection sort function module in C
void selectionSort(int data[], int count)
{
        int i, j, min, temp;
        for (i = 0; i < count - 1; i++) {
                /* find the minimum */
                min = i;
                for (j = i+1; j < count; j++)
                    if (data[j] < data[min])
                        min = j;
                /* swap data[i] and data[min] */
                temp = data[i];
                data[i] = data[min];
                data[min] = temp;
        }
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics