日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

经典排序算法(6)——直接选择排序算法详解

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 经典排序算法(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)——直接选择排序算法详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。