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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法一之简单选择排序

發(fā)布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法一之简单选择排序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、??選擇排序的思想 選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關(guān)鍵字最小的記錄作為有序序列中第i個記錄。基于此思想的算法主要有簡單選擇排序樹型選擇排序堆排序。 簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。

?

二、算法實現(xiàn)

簡單算法:

public void selectionSort(int[] data){int temp; //臨時空間//data.length-1趟for(int i=0;i<data.length-1;i++){for(int j=i+1;j<data.length;j++){//交換,保存最小記錄在i空間if(data[i]>data[j]){temp =data[i];data[i]=data[j];data[j]=temp;}} } }

?

優(yōu)化的算法:

public void selectionSort(int[] data){int minIndex; //最小記錄下標(biāo)int temp; //臨時空間//data.length-1趟for(int i=0;i<data.length-1;i++){//在i到data.length-1中匹配最小記錄minIndex=i; //默認(rèn)最小值為第一個記錄 for(int j=i+1;j<data.length;j++){//保存最小記錄的下標(biāo)if(data[minIndex]>data[j]){minIndex=j;}}

//最小記錄不在下標(biāo)i處,互交換數(shù)據(jù)if(minIndex!=i){temp =data[i];data[i]=data[minIndex];data[minIndex]=temp;}} }

?

三、復(fù)雜度

? ? 簡單選擇排序中,所需進(jìn)行記錄移動的操作次數(shù)較少,其最小值為“0”,最大值為3(n-1)。

? ? 最好時間O(n2),最壞時間O(n2),平均時間O(n2)。輔助存儲O(1),不穩(wěn)定,n小時較好。

? ? 然而,無論記錄的初始序列如何,所需進(jìn)行的關(guān)鍵字間的比較次數(shù)相同,均為n(n-1)/2,因此,總的時間復(fù)雜度為O(n2)

?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的算法一之简单选择排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。