java快速排序數(shù)組代碼 Java快速排序代碼

java 數(shù)組排序的方法

JAVA 中數(shù)組的幾種排序方法:

創(chuàng)新互聯(lián)客戶idc服務(wù)中心,提供川西大數(shù)據(jù)中心、成都服務(wù)器、成都主機托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價的產(chǎn)品以及開放、透明、穩(wěn)定、高性價比的服務(wù),資深網(wǎng)絡(luò)工程師在機房提供7*24小時標準級技術(shù)保障。

1、數(shù)組的冒泡排序

[java] view plaincopyprint?

public void bubbleSort(int a[]) {

int n = a.length;

for (int i = 0; i n - 1; i++) {

for (int j = 0; j n - 1; j++) {

if (a[j] a[j + 1]) {

int temp = a[j];

a[j] = a[j + 1];

a[j + 1] = temp;

}

}

}

}

2、數(shù)組的選擇排序

[java] view plaincopyprint?

public void selectSort(int a[]) {

for (int n = a.length; n 1; n--) {

int i = max(a, n);

int temp = a[i];

a[i] = a[n - 1];

a[n - 1] = temp;

}

}

3、數(shù)組的插入排序

[java] view plaincopyprint?

public void insertSort(int a[]) {

int n = a.length;

for (int i = 1; i n; i++) { //將a[i]插入a[0:i-1]

int t = a[i];

int j;

for (j = i - 1; j = 0 t a[j]; j--) {

a[j + 1] = a[j];

}

a[j + 1] = t;

}

}

4、設(shè)置兩層循環(huán)

[java] view plaincopyprint?

for(int i=0;iarrayOfInts.length;i++)

{

for(int j=i+1;jarrayOfInts.length;j++)

{

if(arrayOfInts[i]arrayOfInts[j])

{

a=arrayOfInts[i];

arrayOfInts[i]=arrayOfInts[j];

arrayOfInts[j]=a;

}

}

}

5、還有一種方法就是用Arrays.sort()方法:

[java] view plaincopyprint?

//導(dǎo)入包

import java.util.Arrays;

public class Two3{

public static void main(String[]args)

{

int[]arrayOfInts={32,87,3,589,12,7076,2000,8,622,127};

Arrays.sort(arrayOfInts);

for(int i=0;iarrayOfInts.length-1;i++)

{

System.out.print(arrayOfInts[i]+" ");

}

}

求java快速排序的正確代碼

一趟快速怕序的具體做法是:附設(shè)兩個指針low和high,他們的初值分別為low和high,設(shè)樞軸記錄的關(guān)鍵字為privotkey,則首先從high所指位置向前搜索找到第一個關(guān)鍵字小于pivotkey的記錄和樞軸記錄互相交換,然后從low所指向的位置起向后搜索,找到第一個關(guān)鍵字大于privotkey的記錄和樞軸記錄互相交換,重復(fù)這兩步直至low==high位置.

import java.util.concurrent.Executor;

import java.util.concurrent.ExecutorService;

import java.util.concurrent.Executors;

public class 快速排序_1 {

public static void main(String[] args) throws InterruptedException {

int test[] = {15,23,56,7,13,52,20,7};

new 快速排序_1().qSort(test, 0, test.length-1);

for(int k:test) System.out.println(k);

}

public void qSort(int []array,int low,int high){

if(low

int privot=partition(array,low,high);

qSort(array,low,privot-1);

qSort(array,privot+1,high);

}

}

public int partition(int [] array,int low,int high){

/**

* 選擇 low位置 作為曲軸(支點)

*/

int pivot=array[low];

int temp=0;

/**

* 如果 low

*/

while(low

/**

* 先從 high端 開始判斷

*/

while(low=pivot) high--;

/**

* 進行 置換操作

*/

if(low

array[low]=array[high];

low++;

}

/**

* 從 low 端判斷

*/

while(low

/**

* 進行 置換操作

*/

if(low

array[high]=array[low];

high--;

}

}

array[low]=pivot;

return low;

}

}

java快速排序簡單代碼

.example-btn{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.example-btn:hover{color:#fff;background-color:#47a447;border-color:#398439}.example-btn:active{background-image:none}div.example{width:98%;color:#000;background-color:#f6f4f0;background-color:#d0e69c;background-color:#dcecb5;background-color:#e5eecc;margin:0 0 5px 0;padding:5px;border:1px solid #d4d4d4;background-image:-webkit-linear-gradient(#fff,#e5eecc 100px);background-image:linear-gradient(#fff,#e5eecc 100px)}div.example_code{line-height:1.4em;width:98%;background-color:#fff;padding:5px;border:1px solid #d4d4d4;font-size:110%;font-family:Menlo,Monaco,Consolas,"Andale Mono","lucida console","Courier New",monospace;word-break:break-all;word-wrap:break-word}div.example_result{background-color:#fff;padding:4px;border:1px solid #d4d4d4;width:98%}div.code{width:98%;border:1px solid #d4d4d4;background-color:#f6f4f0;color:#444;padding:5px;margin:0}div.code div{font-size:110%}div.code div,div.code p,div.example_code p{font-family:"courier new"}pre{margin:15px auto;font:12px/20px Menlo,Monaco,Consolas,"Andale Mono","lucida console","Courier New",monospace;white-space:pre-wrap;word-break:break-all;word-wrap:break-word;border:1px solid #ddd;border-left-width:4px;padding:10px 15px} 排序算法是《數(shù)據(jù)結(jié)構(gòu)與算法》中最基本的算法之一。排序算法可以分為內(nèi)部排序和外部排序,內(nèi)部排序是數(shù)據(jù)記錄在內(nèi)存中進行排序,而外部排序是因排序的數(shù)據(jù)很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。以下是快速排序算法:

快速排序是由東尼·霍爾所發(fā)展的一種排序算法。在平均狀況下,排序 n 個項目要 Ο(nlogn) 次比較。在最壞狀況下則需要 Ο(n2) 次比較,但這種狀況并不常見。事實上,快速排序通常明顯比其他 Ο(nlogn) 算法更快,因為它的內(nèi)部循環(huán)(inner loop)可以在大部分的架構(gòu)上很有效率地被實現(xiàn)出來。

快速排序使用分治法(Divide and conquer)策略來把一個串行(list)分為兩個子串行(sub-lists)。

快速排序又是一種分而治之思想在排序算法上的典型應(yīng)用。本質(zhì)上來看,快速排序應(yīng)該算是在冒泡排序基礎(chǔ)上的遞歸分治法。

快速排序的名字起的是簡單粗暴,因為一聽到這個名字你就知道它存在的意義,就是快,而且效率高!它是處理大數(shù)據(jù)最快的排序算法之一了。雖然 Worst Case 的時間復(fù)雜度達到了 O(n?),但是人家就是優(yōu)秀,在大多數(shù)情況下都比平均時間復(fù)雜度為 O(n logn) 的排序算法表現(xiàn)要更好,可是這是為什么呢,我也不知道。好在我的強迫癥又犯了,查了 N 多資料終于在《算法藝術(shù)與信息學(xué)競賽》上找到了滿意的答案:

快速排序的最壞運行情況是 O(n?),比如說順序數(shù)列的快排。但它的平攤期望時間是 O(nlogn),且 O(nlogn) 記號中隱含的常數(shù)因子很小,比復(fù)雜度穩(wěn)定等于 O(nlogn) 的歸并排序要小很多。所以,對絕大多數(shù)順序性較弱的隨機數(shù)列而言,快速排序總是優(yōu)于歸并排序。

1. 算法步驟

從數(shù)列中挑出一個元素,稱為 "基準"(pivot);

重新排序數(shù)列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的后面(相同的數(shù)可以到任一邊)。在這個分區(qū)退出之后,該基準就處于數(shù)列的中間位置。這個稱為分區(qū)(partition)操作;

遞歸地(recursive)把小于基準值元素的子數(shù)列和大于基準值元素的子數(shù)列排序;

2. 動圖演示

代碼實現(xiàn) JavaScript 實例 function quickSort ( arr , left , right ) {

var len = arr. length ,

? ? partitionIndex ,

? ? left = typeof left != 'number' ? 0 : left ,

? ? right = typeof right != 'number' ? len - 1 : right ;

if ( left

用JAVA實現(xiàn)快速排序算法?

本人特地給你編的代碼\x0d\x0a親測 \x0d\x0a\x0d\x0apublic class QuickSort {\x0d\x0a\x0d\x0apublic static int Partition(int a[],int p,int r){\x0d\x0aint x=a[r-1];\x0d\x0aint i=p-1;\x0d\x0aint temp;\x0d\x0a for(int j=p;j if(a[j-1] // swap(a[j-1],a[i-1]);\x0d\x0a i++;\x0d\x0a temp=a[j-1];\x0d\x0a a[j-1]=a[i-1];\x0d\x0a a[i-1]=temp;\x0d\x0a\x0d\x0a}\x0d\x0a }\x0d\x0a //swap(a[r-1,a[i+1-1]);\x0d\x0a temp=a[r-1];\x0d\x0a a[r-1]=a[i+1-1];\x0d\x0a a[i+1-1]=temp;\x0d\x0a \x0d\x0a return i+1;\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apublic static void QuickSort(int a[],int p,int r){\x0d\x0a\x0d\x0aif(p

java怎么讓數(shù)組的數(shù)字從大到小排序?

將數(shù)字從大到小排序的方法:

例如簡一點的冒泡排序,將第一個數(shù)字和后面的數(shù)字逐個比較大小,如果小于,則互換位置,大于則不動。此時,第一個數(shù)為數(shù)組中的最大數(shù)。然后再將第二個數(shù)與后面的數(shù)逐個比較,以次類推。

示例代碼如下:?

public?class?Test?{?

public?static?void?main(String[]?args)?{?

int?[]?array?=?{12,3,1254,235,435,236,25,34,23};?

int?temp;?

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

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

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

temp?=?array[i];?

array[i]?=?array[j];?

array[j]?=?temp; //?兩個數(shù)交換位置?

}?

}?

}?

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

System.out.print(array[i]+"??");?

}?

}?

}

數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。

Java 語言中提供的數(shù)組是用來存儲固定大小的同類型元素。

你可以聲明一個數(shù)組變量,如 numbers[100] 來代替直接聲明 100 個獨立變量 number0,number1,....,number99

擴展資料

Java中利用數(shù)組進行數(shù)字排序一般有4種方法:

1、選擇排序是先將數(shù)組中的第一個數(shù)作為最大或最小數(shù),然后通過循環(huán)比較交換最大數(shù)或最小數(shù)與一輪比較中第一個數(shù)位置進行排序。

2、冒泡排序也是先將數(shù)組中的第一個數(shù)作為最大或最小數(shù),循環(huán)比較相鄰兩個數(shù)的大小,滿足條件就互換位置,將最大數(shù)或最小數(shù)沉底。

3、快速排序法主要是運用Arrays類中的Arrays.sort方法()實現(xiàn)。

4、插入排序是選擇一個數(shù)組中的數(shù)據(jù),通過不斷的插入比較最后進行排序。

當前名稱:java快速排序數(shù)組代碼 Java快速排序代碼
網(wǎng)頁地址:http://muchs.cn/article46/docooeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、動態(tài)網(wǎng)站定制開發(fā)、域名注冊手機網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(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)

成都app開發(fā)公司