導航:首頁 > 源碼編譯 > java排序演算法

java排序演算法

發布時間:2022-01-13 21:58:23

『壹』 java 請教排序演算法

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
* @author wsj
* @date 2010-5-16, 上午10:13:47
*/
public class Test1 {
public static void main(String[] args){
Integer arr1[]={6,3,4,5,1};
Integer arr2[]={3,4,7,9,0};
List<MyInteger> list1=new ArrayList<MyInteger>();
List<MyInteger> list2=new ArrayList<MyInteger>();
for (int i = 0; i < arr2.length; i++) {
list1.add(new MyInteger(arr1[i]));
list2.add(new MyInteger(arr2[i]));
}
System.out.print("數組A排序前:");
output(list1);
Collections.sort(list1);
System.out.print("數組A排序後:");
output(list1);
System.out.print("數組B排序前:");
output(list2);
Collections.sort(list2);
System.out.print("數組B排序後:");
output(list2);

List<MyInteger> allList=new ArrayList<MyInteger>();
allList.addAll(list1);
allList.addAll(list2);
System.out.print("合並排序前:");
output(allList);
Collections.sort(allList);
System.out.print("合並排序後:");
output(allList);

System.out.println("A數組占:"+getCount(allList, list1)+" 個");
System.out.println("B數組占:"+getCount(allList, list2)+" 個");
}

public static void output(List<MyInteger> list){
for (MyInteger m:list) {
System.out.print(m.val+",");
}
System.out.println();
}

public static int getCount(List<MyInteger> allList,List<MyInteger> list){
int count=0;
for (int i = 4; i>=0; i--) {
count=list.lastIndexOf(allList.get(i))+1;
if(count>0) return count;
}
return count;
}

}

class MyInteger implements Comparable<MyInteger>{
Integer val;

public MyInteger(Integer val) {
this.val = val;
}

@Override
public int compareTo(MyInteger o) {
if(o==null||o.val==null) return -1;
return -val.compareTo(o.val);
}

@Override
public boolean equals(Object obj) {
return val.equals(((MyInteger)obj).val);
}

}

『貳』 java怎樣調用排序包而不用自己寫排序演算法

import java.util.Arrays;

public class Test_2 {

public static void main(String[] args) {
int
a[]={9,88,77,11,8};
Arrays.sort(a);
for(int
i=0;i<a.length;i++)
System.out.println(a[i]);
}

}

這不是用TreeSet寫的 你看是你想要的不

補充:

這是樹集 相對比較復雜

package Test;

import java.util.Arrays;
import java.util.Comparator;
import
java.util.Iterator;
import java.util.TreeSet;

public class Test_2 {

public static void main(String[] args) {
// int a[]={9,88,77,11,8};
//
Arrays.sort(a);
// for(int i=0;i<a.length;i++)
//
System.out.println(a[i]);
TreeSet mytree = new TreeSet(new Comparator()
{
public int compare(Object A, Object B) {
Student s1=(Student)
A;
Student s2=(Student) B;
return s1.compareTo(s2);
}
});
Student
st1,st2,st3,st4;
st1=new Student(90);
st2=new Student(9);
st3=new
Student(99);
st4=new
Student(19);
mytree.add(st1);
mytree.add(st2);
mytree.add(st3);
mytree.add(st4);
Iterator
te=mytree.iterator();
while(te.hasNext())
{
Student s=(Student)
te.next();
System.out.println(s.score);
}
}

}

class Student implements Comparable {
int score;

Student(int score) {
this.score = score;
}

public int compareTo(Object obj) {
Student st = (Student) obj;
return
(this.score - st.score);
}
}

『叄』 java的排序演算法怎麼寫所有的

public static void buildHeap(int [] a,int beg,int end){
int size = end-beg+1;
int temp;
for(int i = size/2;i>0;i--){
if((2*i+1<=end)&&a[i]<a[2*i+1]){
temp=a[i];
a[i]=a[2*i+1];
a[2*i+1]=temp;
}
if((2*i<=end)&&a[i]<a[2*i]){
temp=a[i];
a[i]=a[2*i];
a[2*i]=temp;
}
}
}

public static void heapSort(int [] a,int beg,int end){
int size = end-beg+1;
int temp;
for(int i =size;i>0;i--){
buildHeap(a, 1, i);
temp=a[1];
a[1]=a[i];
a[i]=temp;
}
}

public static void shellSort(int[] a,int wid){
int temp;int j;

for(int i=0;i<a.length;i++){
for(int k=i+wid;k<a.length;k+=wid){
j=k-wid;
temp=a[k];
while((j>=0)&&(temp<a[j])){
a[j+wid]=a[j];
j-=wid;
}
a[j+wid]=temp;
}
}
}

public static int partition(int[] a,int beg,int end){
int temp = a[beg];
while(beg<end){
while(beg<end&&a[end]>=temp){
end--;
}
a[beg]=a[end];
while((beg<end)&&(a[beg]<=temp))
{
beg++;
}
a[end]=a[beg];
}
a[beg]=temp;
return beg;
}

public static void quickSort(int[] a,int beg,int end){
if(beg<end){
int q = partition(a, beg, end);
quickSort(a, beg, q-1);
quickSort(a, q+1, end);
}
}

public static void insertSort(int[] a){
int temp;
int j;
for(int i=1;i<a.length;i++){
j=i-1;
temp=a[i];
while((j>=0)&&(temp<a[j])){
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}

『肆』 初學者:用java程序寫一個選擇排序演算法!

選擇排序法:
public class TSort{
public static void main(String args[]){
int a[]={12,45,2,5,26,56};
for(int i=0;i<a.length-1;i++){
int t;
for(int j=i+1;j<a.length;j++){
if(a[i]>a[j]){
t=a[i];a[i]=a[j];a[j]=t;
}
}
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
}

『伍』 java排序,效率高的是哪種排序方法

你網路一下快速排序。它是左右兩邊同時排序的,效率很高。

『陸』 java排序演算法有多少種

演算法和語言無關吧,語言只是把具體的演算法實現出來而已。據我了解的排序演算法11-13種。排序演算法嘛 主要就是個思想而已。不同的演算法時間復雜度不一樣,空間復雜度也不一樣,當然執行的效率也不一樣。當然採用哪種演算法還取決於你要實現什麼樣的功能。就好比說:要同時盡快的找出最大最小,或者盡快的找出最值的位置等等。冒泡排序(bubble sort) — O(n2)
雞尾酒排序 (Cocktail sort, 雙向的冒泡排序) — O(n2)
插入排序 (insertion sort)— O(n2)
桶排序 (bucket sort)— O(n); 需要 O(k) 額外 記憶體
計數排序 (counting sort) — O(n+k); 需要 O(n+k) 額外 記憶體
歸並排序 (merge sort)— O(n log n); 需要 O(n) 額外記憶體
原地歸並排序 — O(n2)
二叉樹排序 (Binary tree sort) — O(n log n); 需要 O(n) 額外記憶體
鴿巢排序 (Pigeonhole sort) — O(n+k); 需要 O(k) 額外記憶體
基數排序 (radix sort)— O(n·k); 需要 O(n) 額外記憶體
Gnome sort — O(n2)
Library sort — O(n log n) with high probability, 需要 (1+ε)n 額外記憶體不穩定
選擇排序 (selection sort)— O(n2)
希爾排序 (shell sort)— O(n log n) 如果使用最佳的現在版本
Comb sort — O(n log n)
堆排序 (heapsort)— O(n log n)
Smoothsort — O(n log n)
快速排序 (quicksort)— O(n log n) 期望時間, O(n2) 最壞情況; 對於大的、亂數串列一般相信是最快的已知排序
等。

『柒』 java怎麼實現排序

Java實現幾種常見排序方法

日常操作中常見的排序方法有:冒泡排序、快速排序、選擇排序、插入排序、希爾排序,甚至還有基數排序、雞尾酒排序、桶排序、鴿巢排序、歸並排序等。
以下常見演算法的定義
1. 插入排序:插入排序基本操作就是將一個數據插入到已經排好序的有序數據中,從而得到一個新的、個數加一的有序數據,演算法適用於少量數據的排序,時間復雜度為O(n^2)。是穩定的排序方法。插入排序的基本思想是:每步將一個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的文件中適當位置上,直到全部插入完為止。
2. 選擇排序:選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。 選擇排序是不穩定的排序方法。
3. 冒泡排序:冒泡排序(Bubble Sort),是一種計算機科學領域的較簡單的排序演算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端。
4. 快速排序:快速排序(Quicksort)是對冒泡排序的一種改進。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。
5. 歸並排序:歸並排序是建立在歸並操作上的一種有效的排序演算法,該演算法是採用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合並,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合並成一個有序表,稱為二路歸並。
6. 希爾排序:希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序;隨著增量逐漸減少,每組包含的關鍵詞越來越多,當增量減至1時,整個文件恰被分成一組,演算法便終止。
https://www.cnblogs.com/wangmingshun/p/5635292.html

『捌』 用JAVA實現快速排序演算法

public void quickSort(int left,int right,int a[])
{
int l=left;
int r=right;
int pivot=a[(l+r)/2];//轉軸數
int temp=0;
while(l<r)
{
while(a[l]<pivot)l++;
while(a[r]>pivot)r--;

if(l>=r)break;

temp=a[l];
a[l]=a[r];
a[r]=temp;

if(a[l]==pivot)r--;
if(a[r]==pivot)l++;
}
if(l==r)
{
l++;
r--;
}
if(left<r)quickSort(left,r,a);
if(right>l)quickSort(l,right,a);
}

『玖』 Java的排序演算法有哪些

排序: 插入,冒泡,選擇,Shell,快速排序

『拾』 Java 排序演算法(選擇、冒泡)等等

//選擇排序
publicstaticvoidselectionSort(int[] elements){
for(inti = 0; i < elements.length-1; ++i){
intk = i;
for(intj = i; j < elements.length; ++j){
if(elements[k] > elements[j]){
k = j;
}
}
if(k != i){//交換元素
inttemp = elements[i];
elements[i] = elements[k];
elements[k] = temp;
}
} }

//冒泡排序
static void bubblesort(int[] a){
int temp;
for(int i=0; i<a.length;++i){
for(int j=a.length-1;j>i;--j){
if(a[j] <a[j-1]){
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
}

樓上說的沒錯,你得自己去學會解決問題。好好加油吧...

閱讀全文

與java排序演算法相關的資料

熱點內容
伺服器一直崩應該用什麼指令 瀏覽:916
cm202貼片機編程 瀏覽:724
php構造函數帶參數 瀏覽:175
解壓電波歌曲大全 瀏覽:336
為啥文件夾移到桌面成word了 瀏覽:858
命令符的安全模式是哪個鍵 瀏覽:758
編程中學 瀏覽:956
單片機求助 瀏覽:993
ug加工側面排銑毛坯怎麼編程 瀏覽:271
程序員有關的介紹 瀏覽:736
支付寶使用的什麼伺服器 瀏覽:210
安卓看本地書用什麼軟體好 瀏覽:921
經傳軟體滾動凈利潤指標源碼 瀏覽:522
螢石雲視頻已加密怎麼解除 瀏覽:574
一命令四要求五建議 瀏覽:30
qq文件夾遷移不了 瀏覽:19
液體粘滯系數測定不確定度演算法 瀏覽:332
輕棧源碼 瀏覽:426
把圖片壓縮到500k 瀏覽:35
命令你自己 瀏覽:369