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

Java幾種簡單的排序源代碼

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

創新互聯主營商洛網站建設的網絡公司,主營網站建設方案,成都app開發,商洛h5成都小程序開發搭建,商洛網站營銷推廣歡迎商洛等地區企業咨詢

1.冒泡排序

主要思路: 從前往后依次交換兩個相鄰的元素,大的交換到后面,這樣每次大的數據就到后面,每一次遍歷,最大的數據到達最后面,時間復雜度是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.插入排序

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

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

int?j;

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

int?temp?=?arr[p];???//保存要插入的數據

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

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

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

}

//正確的位置設置成保存的數據

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:排序方法

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

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

* 列已經比較有序,只需要小幅度的調整一下時,我們用冒泡排序。

*/

public class SortUtil extends Sort {

/**

* 插入排序法

* @param data

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

*/

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對位置相鄰的數)并在

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

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

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

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

JAVA快速排序代碼解釋。

說下流程你再去看就清楚了。快速排序用的是迭代法。就是把要排序的一組數,分成兩部分,一部分的所有比指定的第一個大,另一部分都比指定的小。再對兩部分分別進行這樣的運算直到各部分只剩一個數

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

import java.util.Arrays;

import java.util.Collection;

public class Demo2 {

public static void main(String[] args) {

// 這是你的三個數

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

// 兩層嵌套循環

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

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

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

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

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是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論

網頁標題:java排序代碼詳解 java快速排序代碼
URL網址:http://m.kartarina.com/article24/hiehce.html

成都網站建設公司_創新互聯,為您提供搜索引擎優化企業網站制作手機網站建設網站設計公司網站導航網站排名

廣告

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

網站托管運營
主站蜘蛛池模板: 中文无码vs无码人妻 | 无码国内精品久久人妻麻豆按摩 | 无码人妻丰满熟妇区毛片18| 少妇人妻av无码专区| 无码国模国产在线观看免费| 狠狠久久精品中文字幕无码| 免费无码黄网站在线观看| 最新国产AV无码专区亚洲| 无码国内精品久久综合88| 东京热av人妻无码专区| 亚洲中文字幕久久精品无码2021| 日韩综合无码一区二区| 伊人久久精品无码av一区| 亚洲av无码电影网| 成在人线av无码免费高潮水| 亚洲AV无码专区在线播放中文| 亚洲成A∨人片天堂网无码| 亚洲AV无码一区二区三区人| 无码人妻精品一区二区三区99不卡 | 亚洲精品无码永久在线观看 | 曰产无码久久久久久精品| 自慰无码一区二区三区| 亚洲AV无码无限在线观看不卡 | 无码人妻精品一区二区| 无码人妻少妇伦在线电影| 无码人妻精品一区二区三区久久 | 少妇精品无码一区二区三区| 亚洲av无码专区青青草原| 亚洲AV无码AV吞精久久| 日韩久久无码免费毛片软件 | 亚洲Aⅴ无码一区二区二三区软件| 亚洲av无码一区二区乱子伦as| 一区二区三区无码高清视频| 亚洲AV无码国产精品麻豆天美 | 久久午夜伦鲁片免费无码| 无码精品视频一区二区三区| 国产亚洲精品无码专区| 国产精品无码久久av| 无码毛片一区二区三区中文字幕 | 成人免费一区二区无码视频| 日韩精品无码一区二区三区免费|