谁能给份快速排序的代码?
来源:百度知道 编辑:UC知道 时间:2024/06/15 01:59:41
另外 java没指针概念 可以认为是句柄
假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一躺快速排序。一趟快速排序的算法是:
1)、设置两个变量I、J,排序开始的时候I:=1,J:=N;
2)以第一个数组元素作为关键数据,赋值给X,即X:=A[1];
3)、从J开始向前搜索,即由后开始向前搜索(J:=J-1),找到第一个小于X的值,两者交换;
4)、从I开始向后搜索,即由前开始向后搜索(I:=I+1),找到第一个大于X的值,两者交换;
5)、重复第3、4步,直到I=J;
大体思路我明白,但写不出来,哪位高手能给份相对较简单的代码,供小弟研究一下,最好能有注释。
小弟在这里谢谢了。
忘了说了,要java的
public class QuickSort
{
public static void main(String[] args)
{
int []array={3,1,2};
quickSort(array,0,2);
for(int i:array)
System.out.println(i);
}
public static void quickSort(int[] arr, int l, int r) // 分划交换排序,快速排序
{
if (l >= r) // 递归出口
return;
int i, j, k;
int t;
k = arr[l];
i = l;
j = r + 1;
while (i < j) // 找出k(最左边的关键词)的最终位置,此过程中,比k小的放(k最终位置)左边,比k大的放(k最终位置)右边
{
do
{
i++;
}
while (i<r && arr[i] < k);
do
{
j--;
}
while (j>=0 && arr[j] > k);
if (i < j)
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
t = arr[l]; // 最左边的关键词放到它最终的位置
arr[l] = arr[j];
arr[j] = t;
quickSort(arr, l, j - 1); // 递归排序左边和右边
quickSort(arr, j + 1, r);
}
}
public class Quick