當前位置:首頁 » 操作系統 » javasort演算法

javasort演算法

發布時間: 2023-06-19 08:44:43

java中Arrays.sort()排序的原理是什麼

有的時候需要對數組里的element進行排序。當然可以自己編寫合適的排序方法,但既然java包里有自帶的Arrays.sort排序方法,在 數組元素比較少的時候為何不用?

Sorting an Array 1. 數字排序 int[] intArray = new int[] { 4, 1, 3, -23 };

Arrays.sort(intArray);

輸出: [-23, 1, 3, 4]

2. 字元串排序,先大寫後小寫 String[] strArray = new String[] { "z", "a", "C" };

Arrays.sort(strArray);

輸出: [C, a, z]

3. 嚴格按字母表順序排序,也就是忽略大小寫排序 Case-insensitive sort

Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

輸出: [a, C, z]

4. 反向排序, Reverse-order sort

Arrays.sort(strArray, Collections.reverseOrder());

輸出:[z, a, C]

5. 忽略大小寫反向排序 Case-insensitive reverse-order sort

Arrays.sort(strArray, String.CASE_INSENSITIVE_ORDER);

Collections.reverse(Arrays.asList(strArray));

輸出: [z, C, a]

java初學者最常見的錯誤思想,就是試圖去寫一些方法來完成數組的排序功能,其實,數組排序功能,在java的api裡面早已實現,我們沒有 必要去重復製造輪子。

Arrays類有一個靜態方法sort,利用這個方法我們可以傳入我們要排序的數組進去排序,因為我們傳入的是一個數組的引用,所以排序完成的 結果也通過這個引用的來更改數組.對於整數、字元串排序,jdk提供了默認的實現,如果要對一個對象數組排序,則要自己實現 java.util.Comparator介面。

packagecom.gjh.gee.arrays;
importjava.util.Arrays;
publicclassArraySortDemo{
publicvoidsortIntArray(){
int[]arrayToSort=newint[]{48,5,89,80,81,23,45,16,2};
System.out.println("排序前");
for(inti=0;i<arrayToSort.length;i++)
System.out.println(arrayToSort[i]);
//調用數組的靜態排序方法sort
Arrays.sort(arrayToSort);
System.out.println("排序後");
for(inti=0;i<arrayToSort.length;i++)
System.out.println(arrayToSort[i]);
}
publicvoidsortStringArray(){
String[]arrayToSort=newString[]{"Oscar","Charlie","Ryan",
"Adam","David"};
System.out.println("排序前");
for(inti=0;i<arrayToSort.length;i++)
System.out.println(arrayToSort[i]);
System.out.println("排序後");
//調用數組的靜態排序方法sort
Arrays.sort(arrayToSort);
for(inti=0;i<arrayToSort.length;i++)
System.out.println(arrayToSort[i]);
}
publicvoidsortObjectArray(){
Dogo1=newDog("dog1",1);
Dogo2=newDog("dog2",4);
Dogo3=newDog("dog3",5);
Dogo4=newDog("dog4",2);
Dogo5=newDog("dog5",3);
Dog[]dogs=newDog[]{o1,o2,o3,o4,o5};
System.out.println("排序前");
for(inti=0;i<dogs.length;i++){
Dogdog=dogs[i];
System.out.println(dog.getName());
}
Arrays.sort(dogs,newByWeightComparator());
System.out.println("排序後:");
for(inti=0;i<dogs.length;i++){
Dogdog=dogs[i];
System.out.println(dog.getName());
}
}
publicstaticvoidmain(String[]args){
ArraySortDemot=newArraySortDemo();
t.sortIntArray();
t.sortStringArray();
t.sortObjectArray();
}
}

Ⅱ Java List提供的默認排序方法sort()用的是什麼排序策略

你好,很高興回答你的問題。
List只是個介面,sort方法具體是怎麼排序的是在具體的實現類中的。
不同的實現類排序實現是不一樣的。有的同一個實現類在java的不同版本中排序的實現也可能是有差別的。
如果有幫助到你,請點擊採納。

Ⅲ 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中用Arrays sort()如何將字元串倒序排列如,將"abcdefg"排序為"gfedcba".

java中用arrays sort()方法將abcdefg倒序,可以先試用java的comparable介面先進行比較,然後排序,實例如下:

packagetest;

importjava.util.Arrays;
importjava.util.Comparator;

publicclassArraysort{
publicstaticvoidmain(String[]args){
Strings="a,b,c,d,e,f,g";
String[]strArr=s.split(",");
Arrays.sort(strArr,newcom());//排序
for(Stringstr:strArr){
System.out.print(str+",");
}
}
}

classcom<T>implementsComparator<T>{//對abcdefg進行比較大小,排序
publicintcompare(To1,To2){
inti=Integer.parseInt(String.valueOf(o1));
intj=Integer.parseInt(String.valueOf(o2));
if(i>j)return1;
if(i<j)return-1;
return0;
}
}
熱點內容
怎麼在電腦上配置WEB伺服器 發布:2025-03-21 21:41:32 瀏覽:744
圖片上傳中 發布:2025-03-21 21:41:32 瀏覽:81
造夢西遊ol腳本修改視頻 發布:2025-03-21 21:40:43 瀏覽:294
imagegrabpython 發布:2025-03-21 21:35:45 瀏覽:93
javaexcel數據導入資料庫中 發布:2025-03-21 21:30:00 瀏覽:120
小嶽嶽訪問 發布:2025-03-21 21:15:41 瀏覽:93
sql代碼格式化 發布:2025-03-21 21:14:52 瀏覽:629
c語言實現數據結構的演算法 發布:2025-03-21 14:35:55 瀏覽:414
androidphp最佳實踐pdf 發布:2025-03-21 14:33:44 瀏覽:728
哪裡下安卓版60秒 發布:2025-03-21 14:32:06 瀏覽:291