经典排序算法(6)——直接选择排序算法详解
生活随笔
收集整理的這篇文章主要介紹了
经典排序算法(6)——直接选择排序算法详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
直接選擇排序(Straight Select Sort)是一種典型的選擇排序算法,通過不斷選擇序列中最大(小)的元素。
一、算法基本思想
(1)基本思想
直接選擇排序的基本思想就是:不斷從未排序隊列中選擇最大(小)的元素放到已排序隊列隊尾,直至所有元素都排好序。
(2)運行過程
直接選擇排序算法的運作如下:
1、首先在原始序列中找到最小(大)元素,存放到排序序列的起始位置
2、再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。
3)重復第二步,直到所有元素均排序完畢。
(3)示例
二、算法實現(核心代碼)
C++實現:
void selection_sort(int arr[], int len) {int i, j, min;for (i = 0; i < len - 1; i++) {min = i;for (j = i + 1; j < len; j++)if(arr[min] > arr[j])min = j;swap(arr[i], arr[min]);} }
Java實現:
public void selection_sort(int[] arr) {int i, j, min, temp, len = arr.length;for (i = 0; i < len - 1; i++) {min = i;for (j = i + 1; j < len; j++)if (arr[min] > arr[j])min = j;temp = arr[min];arr[min] = arr[i];arr[i] = temp;} }
三、性能(算法時間、空間復雜度、穩定性)分析
直接選擇排序平均時間復雜度為O(n^2);空間復雜度為O(1);是不穩定的排序算法。
原始序列: 21,25,49,25*,16,08
排序后:08,16,? ?21,25*,25,49
兩個25的位置變化了,所以是不穩定的。
總結
以上是生活随笔為你收集整理的经典排序算法(6)——直接选择排序算法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典排序算法(4)——折半插入排序算法详
- 下一篇: 三星三季度出售近117万股ASML股票: