话不多说,上几种排序算法代码实现:冒泡排序,选择排序,快速排序
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>閱讀更多 書耳朵 的文章