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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

数据结构 排序 java_Java数据结构之排序---选择排序

發布時間:2025/3/12 java 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构 排序 java_Java数据结构之排序---选择排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡單選擇排序的介紹:

從給定的序列中,按照指定的規則選出某一個元素,再根據規定交換位置后達到有序的目的。

簡單選擇排序的基本思想:

假定我們的數組為int [] arr = new int[n],第一次我們從arr[0]~arr[n-1]中選擇出最小的值與arr[0]交換。第二次我們從arr[1]~arr[n-1]中選擇出最小的值與arr[1]交換。第三次我們從arr[2]~arr[n-1]中選擇出最小的值與arr[2]交換,...,第i次我們從arr[i-1]~arr[n-1]中選擇出最小的值與arr[i-1]交換,...,第n-1次我們從arr[n-2]~arr[n-1]中選擇出最小的值與arr[n-2]交換。我們總共進行n-1次的交換,從而得到一個由小到大的排序序列。

簡單選擇排序的思路詳解:

例子:原始的數組:[101,34,119,1]

經過第一次選擇排序之后,我們得到的數組:1,[34,119,101]

經過第二次選擇排序之后,我們得到的數組:1,34,[119,101]

經過第三次選擇排序之后,我們得到的數組:1,34,101,[119]

這個時候,我們的序列已經有序了,并且我們執行的次數一共是是4次(n-1)。

針對上述的例子我們進行說明如下:

(1).選擇排序一共有數組大小-1(n-1)輪排序

(2).每一輪排序,又是一個循環,我們先假定每次循環的第一個數都是最小的數,然后和后面的每個數進行比較,如果發現有比當前更小的數,就重新確定這個最小的數,并且要得到這個數的下標。依次進行循環

上述過程在代碼中我會通過注釋說明。

下面的代碼中,我會將選擇排序通過兩種代碼實現:分步驟的實現,整體的實現。在代碼中,我們測試的數組是:[101,34,119,1]

(1).分步驟的實現選擇排序

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] arr = {101,34,119,1};

selectSort(arr);

}

//選擇排序

public static void selectSort(int[] arr){

//第一趟排序

System.out.println("執行的第一趟排序:");

//首先我們要假設第一個元素是最小的,并且記錄最小元素的下標,這里我們分別用min,minIndex表示。

int min = arr[0];

int minIndex = 0;

for(int j = 1+0;j

if(min>arr[j]){ //當我們的min值大于后面的數時,說明min不是最小的,這時候,我們將min與最小的值交換,并且讓minIndex索引變成最小值的索引。

min = arr[j];

minIndex = j;

}

}

//通過上面的交換,我們可以得到這趟序列中最小的元素的值。

//因為我們的第一個元素是我們指定的最小元素,因此在找到比第一個元素更小的元素后,我們應該讓其與第一個元素交換。

arr[minIndex] = arr[0];

arr[0] = min;

System.out.println(Arrays.toString(arr));

//接下來的幾趟排序與第一趟相同

//第二趟排序

System.out.println("執行的第二趟排序:");

min = arr[1];

minIndex = 1;

for(int j = 1+1;j

if(min > arr[j]){

min = arr[j];

minIndex = j;

}

}

arr[minIndex] = arr[1];

arr[1] = min;

System.out.println(Arrays.toString(arr));

//第三趟排序

System.out.println("執行的第三趟排序:");

min = arr[2];

minIndex = 2;

for(int j = 1+2;j

if(min > arr[j]){

min = arr[j];

minIndex = j;

}

}

arr[minIndex] = arr[2];

arr[2] = min;

System.out.println(Arrays.toString(arr));

}

上述代碼我們得到的最終結果是:

(2).整體的代碼實現

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] arr = {101,34,119,1};

selectSort(arr);

}

//選擇排序

public static void selectSort(int[] arr){

//選擇排序的算法

//通過上面的分步,我們可以知道,可以通過循環嵌套來實現

for(int i=0;i

int min = arr[i];

int minIndex = i;

for(int j=i+1;j

if(min>arr[j]){

min = arr[j];

minIndex = j;

}

}

arr[minIndex] = arr[i];

arr[i] = min;

System.out.println("第"+(i+1)+"趟排序的結果:");

System.out.println(Arrays.toString(arr));

}

}

上述代碼我們得到最終的結果是:

但是,還有一點值得注意的是,觀察我們第二趟的結果,我們發現與第一趟的結果是相同的,也就是說,我們在進行選擇排序的過程中,可能出現第一個數就是最小的數,這樣的話我們可以不需要執行交換的代碼,因此選擇排序的算法我們可以做進一步的優化,優化代碼如下(注釋里面有解釋):

public static void main(String[] args) {

// TODO Auto-generated method stub

int[] arr = {101,34,119,1};

selectSort(arr);

}

//選擇排序

public static void selectSort(int[] arr){

//選擇排序的算法

//通過上面的分步,我們可以知道,可以通過循環嵌套來實現

for(int i=0;i

int min = arr[i];

int minIndex = i;

for(int j=i+1;j

if(min>arr[j]){

min = arr[j];

minIndex = j;

}

}

if(minIndex != i){ //我們通過比較minIndex與i的值來確定是否 最小值發生了改變,如果沒有改變,我們不需要執行下面的代碼。

arr[minIndex] = arr[i];

arr[i] = min;

System.out.println("第"+(i+1)+"趟排序的結果:");

System.out.println(Arrays.toString(arr));

}

}

}

最終得到的結果如下:

總結

以上是生活随笔為你收集整理的数据结构 排序 java_Java数据结构之排序---选择排序的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲精品69| 奇米第四色影视 | 欧美自拍在线 | 欧美色图激情小说 | 国产成人在线视频观看 | 韩国三级hd中文字幕叫床浴室 | 中文一区二区在线播放 | 4444亚洲人成无码网在线观看 | 天天撸在线视频 | 色999在线 | 少妇太爽了 | 青青草精品 | 免费国产 | 亚洲码无人客一区二区三区 | 中文字幕精品国产 | 日本网站在线 | 欧美一级在线免费 | av久久久久久 | 色综合中文综合网 | 久av在线 | 伊人久久中文字幕 | 和漂亮岳做爰3中文字幕 | jizz性欧美17 | 97国产在线播放 | 91精品国产成人www | 夜夜爽爽 | 国产精品123区 | 精品少妇白浆小泬60P | www黄色在线观看 | 在线日韩一区 | 91华人在线 | 高清一区二区三区四区 | 亚洲码在线观看 | 国产精品国产三级国产 | 欧美日韩一区二区区别是什么 | 黄色片毛片 | 99久久精品国产亚洲 | 欧美色炮 | 午夜痒痒网 | 狠狠综合网 | 亚洲午夜天堂 | 男人的天堂色偷偷 | 大陆极品少妇内射aaaaa | 成人在线视频免费播放 | 国产又粗又硬又长又爽的演员 | 国产农村乱对白刺激视频 | 好色999| 啊v视频在线| 日韩黄色一级片 | 夜夜爽影院 | 日韩精品中文字幕一区二区 | 日韩免费 | 农村寡妇一区二区三区 | 高跟鞋av| 国产精品伊人久久 | 成人毛片视频免费看 | 密臀久久| 国语对白一区二区 | 欧美群妇大交群 | 日韩av激情 | 亚洲av无码电影在线播放 | 免费av大片| 中文字幕超清在线免费观看 | 欧美一区日韩一区 | 91一区二区三区在线 | 九九在线观看高清免费 | 国产黄a三级三级三级看三级男男 | 午夜久久久久久久久久久 | 精品欧美一区二区精品少妇 | 口爆吞精一区二区三区 | 中文在线免费 | 精品少妇人妻av一区二区三区 | 天天弄 | 欧洲美女与动交ccoo | 黄色a在线观看 | 日本aⅴ视频 | 日韩在线激情视频 | 久草免费福利视频 | 亚日韩一区 | 真人毛片视频 | 打屁股视频网站 | 牛牛影视一区二区 | av片网站| 丰满人妻中伦妇伦精品app | 国产欧美一区二区三区在线看蜜臂 | 亚洲av无码一区二区三区dv | 亚洲午夜久久久久 | 囯产精品一品二区三区 | 专干老肥女人88av | 亚洲码无人客一区二区三区 | 欧美日韩视频在线观看免费 | 国产精品久久影视 | 久久av在线 | 日韩黄色免费观看 | 国产乱码精品一区二区三区不卡 | 欧美日韩激情在线一区二区三区 | 婷婷精品视频 | 伦理片一区二区三区 | 亚洲一区二区三区久久久成人动漫 |