真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼中排序的方法,Java實(shí)現(xiàn)排序

java冒泡排序法代碼

冒泡排序是比較經(jīng)典的排序算法。代碼如下:

上街ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

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

for(int j=1;jarr.length-i;j++){

//交換位置

} ? ?

拓展資料:

原理:比較兩個(gè)相鄰的元素,將值大的元素交換至右端。

思路:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)第一趟步驟,直至全部排序完成。

第一趟比較完成后,最后一個(gè)數(shù)一定是數(shù)組中最大的一個(gè)數(shù),所以第二趟比較的時(shí)候最后一個(gè)數(shù)不參與比較;

第二趟比較完成后,倒數(shù)第二個(gè)數(shù)也一定是數(shù)組中第二大的數(shù),所以第三趟比較的時(shí)候最后兩個(gè)數(shù)不參與比較;

依次類推,每一趟比較次數(shù)-1;

??

舉例說明:要排序數(shù)組:int[]?arr={6,3,8,2,9,1};?

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

for(int j=1;jarr.length-i;j++){

//交換位置

} ? ?

參考資料:冒泡排序原理

請(qǐng)給出java幾種排序方法

java常見的排序分為:

1 插入類排序

主要就是對(duì)于一個(gè)已經(jīng)有序的序列中,插入一個(gè)新的記錄。它包括:直接插入排序,折半插入排序和希爾排序

2 交換類排序

這類排序的核心就是每次比較都要“交換”,在每一趟排序都會(huì)兩兩發(fā)生一系列的“交換”排序,但是每一趟排序都會(huì)讓一個(gè)記錄排序到它的最終位置上。它包括:起泡排序,快速排序

3 選擇類排序

每一趟排序都從一系列數(shù)據(jù)中選擇一個(gè)最大或最小的記錄,將它放置到第一個(gè)或最后一個(gè)為位置交換,只有在選擇后才交換,比起交換類排序,減少了交換記錄的時(shí)間。屬于它的排序:簡(jiǎn)單選擇排序,堆排序

4 歸并類排序

將兩個(gè)或兩個(gè)以上的有序序列合并成一個(gè)新的序列

5 基數(shù)排序

主要基于多個(gè)關(guān)鍵字排序的。

下面針對(duì)上面所述的算法,講解一些常用的java代碼寫的算法

二 插入類排序之直接插入排序

直接插入排序,一般對(duì)于已經(jīng)有序的隊(duì)列排序效果好。

基本思想:每趟將一個(gè)待排序的關(guān)鍵字按照大小插入到已經(jīng)排序好的位置上。

算法思路,從后往前先找到要插入的位置,如果小于則就交換,將元素向后移動(dòng),將要插入數(shù)據(jù)插入該位置即可。時(shí)間復(fù)雜度為O(n2),空間復(fù)雜度為O(1)

package sort.algorithm;

public class DirectInsertSort {

public static void main(String[] args) {

// TODO Auto-generated method stub

int data[] = { 2, 6, 10, 3, 9, 80, 1, 16, 27, 20 };

int temp, j;

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

temp = data[i];

j = i - 1;

// 每次比較都是對(duì)于已經(jīng)有序的

while (j = 0 data[j] temp) {

data[j + 1] = data[j];

j--;

}

data[j + 1] = temp;

}

// 輸出排序好的數(shù)據(jù)

for (int k = 0; k data.length; k++) {

System.out.print(data[k] + " ");

}

}

}

三 插入類排序之折半插入排序(二分法排序)

條件:在一個(gè)已經(jīng)有序的隊(duì)列中,插入一個(gè)新的元素

折半插入排序記錄的比較次數(shù)與初始序列無關(guān)

思想:折半插入就是首先將隊(duì)列中取最小位置low和最大位置high,然后算出中間位置mid

將中間位置mid與待插入的數(shù)據(jù)data進(jìn)行比較,

如果mid大于data,則就表示插入的數(shù)據(jù)在mid的左邊,high=mid-1;

如果mid小于data,則就表示插入的數(shù)據(jù)在mid的右邊,low=mid+1

最后整體進(jìn)行右移操作。

時(shí)間復(fù)雜度O(n2),空間復(fù)雜度O(1)

package sort.algorithm;

//折半插入排序

public class HalfInsertSort {

public static void main(String[] args) {

int data[] = { 2, 6, 10, 3, 9, 80, 1, 16, 27, 20 };

// 存放臨時(shí)要插入的元素?cái)?shù)據(jù)

int temp;

int low, mid, high;

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

temp = data[i];

// 在待插入排序的序號(hào)之前進(jìn)行折半插入

low = 0;

high = i - 1;

while (low = high) {

mid = (low + high) / 2;

if (temp data[mid])

high = mid - 1;

else

// low=high的時(shí)候也就是找到了要插入的位置,

// 此時(shí)進(jìn)入循環(huán)中,將low加1,則就是要插入的位置了

low = mid + 1;

}

// 找到了要插入的位置,從該位置一直到插入數(shù)據(jù)的位置之間數(shù)據(jù)向后移動(dòng)

for (int j = i; j = low + 1; j--)

data[j] = data[j - 1];

// low已經(jīng)代表了要插入的位置了

data[low] = temp;

}

for (int k = 0; k data.length; k++) {

System.out.print(data[k] + " ");

}

}

}

四 插入類排序之希爾排序

希爾排序,也叫縮小增量排序,目的就是盡可能的減少交換次數(shù),每一個(gè)組內(nèi)最后都是有序的。

將待續(xù)按照某一種規(guī)則分為幾個(gè)子序列,不斷縮小規(guī)則,最后用一個(gè)直接插入排序合成

空間復(fù)雜度為O(1),時(shí)間復(fù)雜度為O(nlog2n)

算法先將要排序的一組數(shù)按某個(gè)增量d(n/2,n為要排序數(shù)的個(gè)數(shù))分成若干組,每組中記錄的下標(biāo)相差d.對(duì)每組中全部元素進(jìn)行直接插入排序,然后再用一個(gè)較小的增量(d/2)對(duì)它進(jìn)行分組,在每組中再進(jìn)行直接插入排序。當(dāng)增量減到1時(shí),進(jìn)行直接插入排序后,排序完成。

package sort.algorithm;

public class ShellSort {

public static void main(String[] args) {

int a[] = { 1, 54, 6, 3, 78, 34, 12, 45, 56, 100 };

double d1 = a.length;

int temp = 0;

while (true)

{

//利用這個(gè)在將組內(nèi)倍數(shù)減小

//這里依次為5,3,2,1

d1 = Math.ceil(d1 / 2);

//d為增量每個(gè)分組之間索引的增量

int d = (int) d1;

//每個(gè)分組內(nèi)部排序

for (int x = 0; x d; x++)

{

//組內(nèi)利用直接插入排序

for (int i = x + d; i a.length; i += d) {

int j = i - d;

temp = a[i];

for (; j = 0 temp a[j]; j -= d) {

a[j + d] = a[j];

}

a[j + d] = temp;

}

}

if (d == 1)

break;

}

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

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

}

}

五 交換類排序之冒泡排序

交換類排序核心就是每次比較都要進(jìn)行交換

冒泡排序:是一種交換排序

每一趟比較相鄰的元素,較若大小不同則就會(huì)發(fā)生交換,每一趟排序都能將一個(gè)元素放到它最終的位置!每一趟就進(jìn)行比較。

時(shí)間復(fù)雜度O(n2),空間復(fù)雜度O(1)

package sort.algorithm;

//冒泡排序:是一種交換排序

public class BubbleSort {

// 按照遞增順序排序

public static void main(String[] args) {

// TODO Auto-generated method stub

int data[] = { 2, 6, 10, 3, 9, 80, 1, 16, 27, 20, 13, 100, 37, 16 };

int temp = 0;

// 排序的比較趟數(shù),每一趟都會(huì)將剩余最大數(shù)放在最后面

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

// 每一趟從開始進(jìn)行比較,將該元素與其余的元素進(jìn)行比較

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

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

temp = data[j];

data[j] = data[j + 1];

data[j + 1] = temp;

}

}

}

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

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

}

}

JAVA中有哪幾種常用的排序方法?

排序的方法有:插入排序(直接插入排序、希爾排序),交換排序(冒泡排序、快速排序),選擇排序(直接選擇排序、堆排序),歸并排序,分配排序(箱排序、基數(shù)排序)

快速排序的偽代碼。

/

/使用快速排序方法對(duì)a[

:n-

1

]排序

從a[

:n-

1

]中選擇一個(gè)元素作為m

i

d

d

l

e,該元素為支點(diǎn)

把余下的元素分割為兩段left

和r

i

g

h

t,使得l

e

f

t中的元素都小于等于支點(diǎn),而right

中的元素都大于等于支點(diǎn)

遞歸地使用快速排序方法對(duì)left

進(jìn)行排序

遞歸地使用快速排序方法對(duì)right

進(jìn)行排序

所得結(jié)果為l

e

f

t

+

m

i

d

d

l

e

+

r

i

g

h

t

Java排序一共有幾種?

日常操作中,常見的排序方法有:冒泡排序、快速排序、選擇排序、插入排序、希爾排序,甚至還有基數(shù)排序、雞尾酒排序、桶排序、鴿巢排序、歸并排序等。

各類排序方法代碼如圖:

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

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

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

示例代碼如下:?

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; //?兩個(gè)數(shù)交換位置?

}?

}?

}?

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

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

}?

}?

}

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

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

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

擴(kuò)展資料

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

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

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

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

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


文章名稱:java代碼中排序的方法,Java實(shí)現(xiàn)排序
本文路徑:http://weahome.cn/article/hdjpdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部