話不多說,上幾種排序算法代碼實現:冒泡排序,選擇排序,快速排序
class DataPaiXu
{
/*--------------------------------------------------
功能: 冒泡排序
參數說明
第一個: a[]要排序的數組
第二個: 數組的長度
返回值: 無
特別說明:
數組元素大小按升序排列
排序好之後的數組還是a[]
----------------------------------------------------*/
static void bubble_sort(int a[],int iLength)
{
int i,j;
for(j=0;j<ilength-1>
{
for(i=0;i<ilength-1-j>
{
if(a[i]>a[i+1])
{
/*交換a[i] 與a[i+1] 的數據*/
a[i] = a[i]^a[i+1];
a[i+1] = a[i]^a[i+1];
a[i]= a[i]^a[i+1];
}
}
}
}
/*--------------------------------------------------
功能: 選擇排序
參數說明
第一個: a[]要排序的數組
第二個: 數組的長度
返回值: 無
特別說明:
數組元素大小按升序排列
排序好之後的數組還是a[]
----------------------------------------------------*/
static void select_sort(int a[], int iLength)
{
int i, j, min;
for( i =0; i < iLength -1; i ++)
{
min = i; /*首先假設第一個是最小值*/
for( j = i +1; j < iLength; j ++)
{
if( a[min] > a[j])
min = j;
}
//交換
if(min != i)
{
a[min] = a[min]^a[i];
a[i] = a[min]^a[i];
a[min] = a[min]^a[i];
}
}
}
/*
函數功能:把數組中所有比a[low]小的數字放在左邊,
把數組中所有比a[low]大的數字放在右邊,
最後返回a[low]值在數組中的位置
*/
static int partions(int a[],int low,int high)
{
int low_value=a[low];
while (low<high>
{
/*先從高位置查找,直到找出一個比low_value小的數字才退出while循環*/
while (low<high>=low_value)/<high>
--high;
/*找到之後,放在此時low的位置上,大家注意這個時候high位置上的數據
是沒有意義的,因為它已經放在low位置上去了,
下面的代碼會把high位置上數據退換為一個有意義的數字的*/
a[low]=a[high];
/*再從低位置查找,直到找出一個比low_value大的數字才退出while循環*/
while (low<high>
++low;
/*把找到的數字放到數組high的位置上,
這個時候high位置上的數字是有意義的,
那麼這個時候low位置上的數據是沒有意義的,因為它的值放在了high上了*/
a[high]=a[low];
}
/*把值放在low位置上,使得low位置上的數據有意義,
從而整個數組上的每個數字都是有意義的*/
a[low]=low_value;
return low;
}
static void qsort(int a[],int low,int high)
{
int prvotloc;
if(low<high>
{
prvotloc=partions(a,low,high);
qsort(a,low,prvotloc-1); //遞歸調用排序 由low 到prvotloc-1
qsort(a,prvotloc+1,high); //遞歸調用排序 由 prvotloc+1到 high
}
}
/*--------------------------------------------------
功能: 快速排序
參數說明
第一個: a[]要排序的數組
第二個: 數組的長度
返回值: 無
特別說明:
數組元素大小按升序排列
排序好之後的數組還是a[]
----------------------------------------------------*/
static void quicksort(int a[],int n)
{
qsort(a,0,n-1);
}
}
public class Test001 {
public static void main(String[] args)
{
int number[]={50,45,15,78,84,51,24,12,9};
int i;
DataPaiXu paixu = new DataPaiXu();
//執行冒泡排序
paixu.bubble_sort(number,number.length);
//執行選擇排序
//paixu.select_sort(number,number.length);
//執行快速排序
//paixu.quicksort(number,number.length);
for(i=0;i<number.length>
{
System.out.printf("%d ",number[i]);
}
System.out.printf("\\n");
}
}
"/<number.length>/<high>/<high>/<high>/<ilength-1-j>/<ilength-1>