最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

java幾種常見的排序

2022-08-07 21:22 作者:限量版范兒  | 我要投稿

排序,就是將一串數組(一個列表)中的元素(整數,數字,字符串等)按某種順序(增大,減小,字典順序等)重新排列。

下面介紹幾種排序

1.冒泡排序

定義:冒泡排序就是從第一個元素開始,遍歷數組,拿相鄰的兩個元素比較大小,大的排后面,小的移動到前面,通過一輪,得到最后的元素是最大的數.所以,這就需要到雙層循環(huán).外層循環(huán)控制排序輪數,內層循環(huán)用來比較相鄰兩個元素的大小.

例子1

使用冒泡排序排列班級的5個學生的成績,下面給出主要的代碼

public static void main(String[] args) {//總循環(huán)次數為要數組的長度減 1 ? ?for (int i = 0; i < score.length - 1; i++) { ? ? ? ?for (int j = 0; j < score.length - 1 - i; j++) { ? ? ? ? ? ?if (score[j] > score[j + 1]) { ? ? ? ? ? ? ? ?double temp = score[j + 1]; ? ? ? ? ? ? ? ?score[j + 1] = score[j]; ? ? ? ? ? ? ? ?score[j] = temp; ? ? ? ? ? ?} ? ? ? ? ? ?System.out.print(score[j] + " "); ? ? ? ?} ? ? ? ?for (int j = score.length - 1 - i; j < score.length; j++) { ? ? ? ? ? ?System.out.print(score[j] + " "); ? ? ? ?} ? ? ? ?System.out.println(); ? ?} }

因為一開始,就拿最先前面的兩個元素做比較,所以最大循環(huán)輪數應該為數組的個數(長度)-1;然后內存循環(huán)用來比較相鄰兩個元素的大小.定義一個臨時變量來存放數據,使兩個元素之間能進行交換.

同時,冒泡排序的缺點也能看得出來:耗時,每次都需要從頭開始比較.為了提高時間效率,下面介紹另一個排序方式.

2.快速排序

思路步驟:

首先需要任意選取一個數據(通常選用第一個數據),作為基準數;

再將比這個數大的數全放到它的右邊,小于或等于它的數全放到它的左邊;

再對左右區(qū)間重復第二步,直到各區(qū)間只有一個數。

下面用圖說明:

?

?第一張圖是最先輸入的數據,以第一個數據15作為分割點.

?

步驟二:這個過程,是通過遍歷數據,分區(qū),把比15小的數據移到這些比15大的數據的左邊,分成兩份,遍歷完一輪,然后把15移到比15小的數據堆的右邊

下面就接著重復步驟二

?

現在遍歷15的左邊,到了以11為基準數,遍歷4,8,4,都比11小,第二個4和11交換位置.

?

?再到4做基準數,遍歷4,8;8比4大,黃色的4移到中間做分割點.

至此,左邊區(qū)間只有一個數據,左邊快速排序完成;同理,右邊數據也一樣進行排序.

3.選擇排序

很明顯,就是遍歷數組,找出一個最小/最大的元素,順序放在已排好序的數列的最后/最前.代碼原理是使用外層循環(huán)控制循環(huán)輪數,內層循環(huán)找出最值,然后交換位置

例子2

利用選擇排序方法實現對學生的成績:89,78,69,80,99進行排序,并輸出已排序的數組元素。

? ?public static void main(String[] args) { ? ? ? ?int arr[] = {89,78,69,80,99}; ? ? ? ?for (int i = 0; i < arr.length - 1; i++) { ? ? ? ? ? ?//找到最小值的下標 ? ? ? ? ? ?int min = i; ? ? ? ? ? ?for (int j = i + 1; j < arr.length; j++) { ? ? ? ? ? ? ? ?if (arr[j] < arr[min]) { ? ? ? ? ? ? ? ? ? ?//最小值下標賦給遍歷到的那個數 ? ? ? ? ? ? ? ? ? ?min = j; ? ? ? ? ? ? ? ?} ? ? ? ? ? ?} ? ? ? ? ? ?// 將找到的最小值和i位置所在的值進行交換 ? ? ? ? ? ?if (i != min) { ? ? ? ? ? ? ? ?int tmp = arr[i]; ? ? ? ? ? ? ? ?arr[i] = arr[min]; ? ? ? ? ? ? ? ?arr[min] = tmp; ? ? ? ? ? ?} ? ? ? ?} ? ? ? ?for (int i = 0; i <arr.length ; i++) { ? ? ? ? ? ?System.out.print(arr[i]+" "); ? ? ? ? ? ? ? ? ? ?} ? ?} }

?總結:排序在java程序中中不可或缺,這個網站里面含有排序的動態(tài)過程,結合動畫方便去理解,會明白很多排序(冒泡排序,選擇排序,插入排序,歸并排序,快速排序,計數排序,基數排序) - VisuAlgo

鏈接:https://www.dianjilingqu.com/473368.html

java幾種常見的排序的評論 (共 條)

分享到微博請遵守國家法律
金华市| 南皮县| 南宫市| 偃师市| 枞阳县| 建德市| 横山县| 深州市| 宿州市| 红安县| 常州市| 锡林浩特市| 会同县| 南丹县| 柯坪县| 舒城县| 崇阳县| 商水县| 高安市| 时尚| 新巴尔虎左旗| 剑阁县| 临湘市| 宣化县| 静海县| 德化县| 吉安县| 海阳市| 嘉善县| 信丰县| 徐闻县| 志丹县| 巴林右旗| 宁强县| 康乐县| 东城区| 金平| 海兴县| 漾濞| 太谷县| 漳平市|