天天看點

java排序(java排序sort方法)

Java排序算法代碼有哪些呢?

  當人們渴望先知道排在前面的是誰時,

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

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

public class SortUtil extends Sort {

* 插入排序法

* @param data

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

Java中的快速排序源代碼有哪些呢?

public class QuickSort {  public static void main(String[] args) {  Random random=new Random();  int[] pData=new int[10];  for(int i=0;i

  Integer a =random.nextInt(100);  pData[i]= a;  System.out.print(pData[i]+" ");  }  System.out.println();  int left=0;  int right=pData.length-1;  Sort(pData,left,right);  for(int i=0;i

  System.out.print(pData[i]+" ");  }  System.out.println();  }

java幾種基本排序

* 冒泡排序

* 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。  

* 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。  

* 針對所有的元素重複以上的步驟,除了最後一個。

* 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。 

* @param numbers 需要排序的整型數組
*/
public static void bubbleSort(int[] numbers)
{
int temp = 0;
int size = numbers.length;
for(int i = 0 ; i  
{
for(int j = 0 ;j  
{
if(numbers[j] > numbers[j+1])  //交換兩數位置
{
temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] = temp;
}
}
}
}      

快速排序的基本思想:

通過一趟排序将待排序記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分關鍵字小,則分别對這兩部分繼續進行排序,直到整個序列有序。

* 查找出中軸(預設是最低位low)的在numbers數組排序後所在位置
* 
* @param numbers 帶查找數組
* @param low開始位置
* @param high  結束位置
* @return  中軸所在位置
*/
public static int getMiddle(int[] numbers, int low,int high)
{
int temp = numbers[low]; //數組的第一個作為中軸
while(low  
{
while(low  temp)
{
high--;
}
numbers[low] = numbers[high];//比中軸小的記錄移到低端
while(low  
{
low++;
}
numbers[high] = numbers[low] ; //比中軸大的記錄移到高端
}
numbers[low] = temp ; //中軸記錄到尾
return low ; // 傳回中軸的位置
}
遞歸形式的分治排序算法:
/**
* 
* @param numbers 帶排序數組
* @param low  開始位置
* @param high 結束位置
*/
public static void quickSort(int[] numbers,int low,int high)
{
if(low  
{
int middle = getMiddle(numbers,low,high); //将numbers數組進行一分為二
quickSort(numbers, low, middle-1);//對低字段表進行遞歸排序
quickSort(numbers, middle+1, high); //對高字段表進行遞歸排序
}      

java 排序

第一種用冒泡排序

for (int i = 0; i  
for (int j = i; j  
// 兩個數交換
if (arr[i]  
int tmp = Integer.MIN_VALUE;
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}第二種,使用Arrays.sort(),給你個例子      
import java.util.Arrays;
import java.util.Comparator;
public class $ {
public static void main(String[] args) {
Integer[] a = { 1, 3, 2, 4 };// 不能是基礎資料類型,本例中不能是int,必須是Integer
Arrays.sort(a, new Comparator
    
     () {
    
public int compare(Integer o1, Integer o2) {
return o2 - o1;// 降序
// return o1 - o2;//升序
}
});
System.out.println(Arrays.toString(a));
}}你的代碼sort裡面如果就一個參數,那預設的是按升序Arrays沒有提供降序的方法,隻有自己寫一個排序方法。      
import java.util.Scanner;
import java.util.Arrays;
public class Text {
 public static void main(String[] args) {
 System.out.print("請輸入4個數字:");
 Scanner input = new Scanner(System.in);
 int[] a = new int[4];
 for (int i = 0; i  
a[i] = input.nextInt();
 Arrays.sort(a);
 for (int i = a.length; i <= a.length; i++) {
System.out.println(Arrays.toString(a));
 Text.sort(a);
 System.out.println(Arrays.toString(a));
 private static void sort(int[] a) {
 for (int i = 0; i  
for (int j = i + 1; j  
if (a[j] > a[i]) {
int t = a[j];
a[j] = a[i];
a[i] = t;}輸出數組的時候從最後一個開始輸出就可以了。
}
      
public static void main(String[] args) {
 // TODO Auto-generated method stub
 System.out.print("請輸入4個數字:");
 Scanner input =new Scanner(System.in);
// int[] a=new int[4];
 Integer[] a = new Integer[4]; //換成基本類型的類對象
 for(int i=0;i
     
    
 a[i]=input.nextInt();
 Arrays.sort(a,new Comparator
    
     (){ //使用指定比較器方式排序
    
@Override
public int compare(Integer o1, Integer o2) {  //重定義比較器算法
// TODO Auto-generated method stub
return -o1.compareTo(o2);  //調用Ineger的比較算法,傳回倒序結果
 });
// for(int i=a.length;i<=a.length;i++)//輸出不用再循環了,直接輸出
// {  
System.out.println(Arrays.toString(a));
// }
 }...你反過來輸出就行了
Arrays.sort(a);
for(int i=a.length;i>0;i--)
System.out.println(a[i-1]);
}排序完再 用一個等長的數組從a的最後一位取起,把最後一位放到其0位……。一直這樣就從大到小排了