内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

java排序代碼詳解 java快速排序代碼

Java幾種簡單的排序源代碼

給你介紹4種排序方法及源碼,供參考

創(chuàng)新互聯(lián)主營商洛網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都app開發(fā),商洛h5成都小程序開發(fā)搭建,商洛網(wǎng)站營銷推廣歡迎商洛等地區(qū)企業(yè)咨詢

1.冒泡排序

主要思路: 從前往后依次交換兩個相鄰的元素,大的交換到后面,這樣每次大的數(shù)據(jù)就到后面,每一次遍歷,最大的數(shù)據(jù)到達最后面,時間復雜度是O(n^2)。

public?static?void?bubbleSort(int[]?arr){

for(int?i?=0;?i??arr.length?-?1;?i++){

for(int?j=0;?j??arr.length-1;?j++){

if(arr[j]??arr[j+1]){

arr[j]?=?arr[j]^arr[j+1];

arr[j+1]?=?arr[j]^arr[j+1];

arr[j]?=?arr[j]^arr[j+1];

}

}

}

}

2.選擇排序

主要思路:每次遍歷序列,從中選取最小的元素放到最前面,n次選擇后,前面就都是最小元素的排列了,時間復雜度是O(n^2)。

public?static?void?selectSort(int[]?arr){

for(int?i?=?0;?i?arr.length?-1;?i++){

for(int?j?=?i+1;?j??arr.length;?j++){

if(arr[j]??arr[i]){

arr[j]?=?arr[j]^arr[i];

arr[i]?=?arr[j]^arr[i];

arr[j]?=?arr[j]^arr[i];

}

}

}

}

3.插入排序

主要思路:使用了兩層嵌套循環(huán),逐個處理待排序的記錄。每個記錄與前面已經(jīng)排好序的記錄序列進行比較,并將其插入到合適的位置,時間復雜度是O(n^2)。

public?static?void?insertionSort(int[]?arr){

int?j;

for(int?p?=?1;?p??arr.length;?p++){

int?temp?=?arr[p];???//保存要插入的數(shù)據(jù)

//將無序中的數(shù)和前面有序的數(shù)據(jù)相比,將比它大的數(shù),向后移動

for(j=p;?j0??temp?arr[j-1];?j--){

arr[j]?=?arr[j-1];

}

//正確的位置設置成保存的數(shù)據(jù)

arr[j]?=?temp;

}

}

4.希爾排序

主要思路:用步長分組,每個分組進行插入排序,再慢慢減小步長,當步長為1的時候完成一次插入排序,? 希爾排序的時間復雜度是:O(nlogn)~O(n2),平均時間復雜度大致是O(n^1.5)

public?static?void?shellSort(int[]?arr){

int?j?;

for(int?gap?=?arr.length/2;?gap??0?;?gap/=2){

for(int?i?=?gap;?i??arr.length;?i++){

int?temp?=?arr[i];

for(j?=?i;?j=gap??temparr[j-gap];?j-=gap){

arr[j]?=?arr[j-gap];

}

arr[j]?=?temp;

}

}

}

java中排序算法代碼

package temp;

import sun.misc.Sort;

/**

* @author zengjl

* @version 1.0

* @since 2007-08-22

* @Des java幾種基本排序方法

*/

/**

* SortUtil:排序方法

* 關(guān)于對排序方法的選擇:這告訴我們,什么時候用什么排序最好。當人們渴望先知道排在前面的是誰時,

* 我們用選擇排序;當我們不斷拿到新的數(shù)并想保持已有的數(shù)始終有序時,我們用插入排序;當給出的數(shù)

* 列已經(jīng)比較有序,只需要小幅度的調(diào)整一下時,我們用冒泡排序。

*/

public class SortUtil extends Sort {

/**

* 插入排序法

* @param data

* @Des 插入排序(Insertion Sort)是,每次從數(shù)列中取一個還沒有取出過的數(shù),并按照大小關(guān)系插入到已經(jīng)取出的數(shù)中使得已經(jīng)取出的數(shù)仍然有序。

*/

public int[] insertSort(int[] data) {

1/11頁

int temp;

for (int i = 1; i data.length; i++) {

for (int j = i; (j 0) (data[j] data[j - 1]); j--) {

swap(data, j, j - 1);

}

}

return data;

}

/**

* 冒泡排序法

* @param data

* @return

* @Des 冒泡排序(Bubble Sort)分為若干趟進行,每一趟排序從前往后比較每兩個相鄰的元素的大小(因此一趟排序要比較n-1對位置相鄰的數(shù))并在

* 每次發(fā)現(xiàn)前面的那個數(shù)比緊接它后的數(shù)大時交換位置;進行足夠多趟直到某一趟跑完后發(fā)現(xiàn)這一趟沒有進行任何交換操作(最壞情況下要跑n-1趟,

* 這種情況在最小的數(shù)位于給定數(shù)列的最后面時發(fā)生)。事實上,在第一趟冒泡結(jié)束后,最后面那個數(shù)肯定是最大的了,于是第二次只需要對前面n-1

* 個數(shù)排序,這又將把這n-1個數(shù)中最小的數(shù)放到整個數(shù)列的倒數(shù)第二個位置。這樣下去,冒泡排序第i趟結(jié)束后后面i個數(shù)都已經(jīng)到位了,第i+1趟實

* 際上只考慮前n-i個數(shù)(需要的比較次數(shù)比前面所說的n-1要?。?。這相當于用數(shù)學歸納法證明了冒泡排序的正確性

JAVA快速排序代碼解釋。

說下流程你再去看就清楚了??焖倥判蛴玫氖堑ā>褪前岩判虻囊唤M數(shù),分成兩部分,一部分的所有比指定的第一個大,另一部分都比指定的小。再對兩部分分別進行這樣的運算直到各部分只剩一個數(shù)

java三個數(shù)排序比較大小的完整代碼,并給出詳細解釋,初學者,謝謝

import java.util.Arrays;

import java.util.Collection;

public class Demo2 {

public static void main(String[] args) {

// 這是你的三個數(shù)

int[] arr = { 12, 32, 18 };

// 兩層嵌套循環(huán)

for (int i = 0; i arr.length; i++) {

for (int j = 0; j i; j++) {

// 如果后者小于前者,讓他們交換位置,一直循環(huán)

// 直到每個數(shù)字都從頭到尾跟數(shù)組里的每個數(shù)字比較一次

if (arr[i] arr[j]) {

// 這三步就是交換位置,相信聰明的你一定看得懂了

arr[i] = arr[i] + arr[j];

arr[j] = arr[i] - arr[j];

arr[i] = arr[i] - arr[j];

}

}

}

//最后打印出來

for (int i = 0; i arr.length; i++) {

System.out.println(arr[i]);

}

}

}

資料拓展:

Java是一門面向?qū)ο缶幊陶Z言,不僅吸收了C++語言的各種優(yōu)點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,極好地實現(xiàn)了面向?qū)ο罄碚?/p>

網(wǎng)頁標題:java排序代碼詳解 java快速排序代碼
URL網(wǎng)址:http://m.rwnh.cn/article24/hiehce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作、手機網(wǎng)站建設網(wǎng)站設計公司、網(wǎng)站導航、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
璧山县| 阳谷县| 桐乡市| 元氏县| 济源市| 灵丘县| 云梦县| 姚安县| 历史| 岐山县| 长岭县| 山西省| 百色市| 温泉县| 红桥区| 舞钢市| 孙吴县| 四子王旗| 开阳县| 建德市| 清水县| 宜君县| 天门市| 双柏县| 左权县| 岗巴县| 义乌市| 岳普湖县| 历史| 临武县| 仪陇县| 长丰县| 醴陵市| 华容县| 自治县| 汕尾市| 金湖县| 台前县| 思南县| 仙游县| 大厂|