想学习排序算法
有没有实现数据排序算法 是用Java技术编写的Java applet 程序 问题点数:50、回复次数:8Top
1 楼cat_871017(零下九度)回复于 2005-08-01 22:59:38 得分 15
去看JDK安装文件夹下的demo\applets\SortDemo下的网页,有源程序Top
2 楼yangbc(土豆块)回复于 2005-08-02 00:01:30 得分 5
就那几个排序算法,看看c语言的数据结构就行了Top
3 楼lei198203(lei)回复于 2005-08-02 08:57:25 得分 5
想学排序, 一定要看数据结构.Top
4 楼zawx(submarine)回复于 2005-08-02 09:02:31 得分 5
nod,data structureTop
5 楼inexplicable(inexplicable)回复于 2005-08-02 09:11:22 得分 5
对阿,java只是一种实现方式而已,重要的是算法本身的思想,
懂了用什么语言都可以阿。
找一本data structure 的书吧。Top
6 楼rower203(华仔)回复于 2005-08-02 10:01:29 得分 15
一个例子:
public class QuickSort {
public int[] quickSort(int[] data, int leftP,int rightP,int index)
{
int i,j;
int pivot;
int temp;
i=leftP+1;
j=rightP;
if (i==j && data[j]<data[leftP])
{
temp=data[leftP];
data[leftP]=data[j];
data[j]=temp;
}
pivot=data[leftP];
if(i<j)
{
do
{
while(data[i]<=pivot && i<j)
{
i++;
}
while(data[j]>=pivot && j>i)
{
j--;
}
if(i<j)
{
temp=data[i];
data[i]=data[j];
data[j]=temp;
}
if (i==j)
{
if (data[j]>data[leftP]) j=j-1;
temp=data[leftP];
data[leftP]=data[j];
data[j]=temp;
}
}while(i<j);
if (j>leftP+1)
quickSort(data, leftP,j-1,index);
if (j<rightP-1)
quickSort(data, j+1,rightP,index);
}
return data;
}
public void printResult(int[] data, String msg){
System.out.print(msg);
for(int i = 0; i < data.length; i++)
{
System.out.print(" " + data[i] + " ");
}
System.out.println("");
}
public static void main(String []args)
{
int[] data={4,6,2,9,5,21,7,3}; ;
QuickSort qs = new QuickSort();
qs.printResult(data, "Before Quick Sorting: ");
data = qs.quickSort(data, 0, data.length-1, data.length);
qs.printResult(data, "After Quick Sorting : ");
}
}Top
7 楼rower203(华仔)回复于 2005-08-02 11:04:46 得分 0
有Bug,改了改:
public class QuickSort {
public int[] quickSort(int[] data, int leftP,int rightP)
{
int i = leftP;
int j = rightP;
if(i < j){
do {
// printResult(data, "now: ");
while(data[i] < data[leftP] && i < j){
i++;
}
while(data[j] > data[leftP] && j > i){
j--;
}
if(i < j){
exchangeData(data, i, j);
}
if (i == j) {
if (data[j] > data[leftP]){
j--;
}
exchangeData(data, j, leftP);
}
} while(i < j);
if (j > ++leftP){
quickSort(data, leftP, --j);
}
if (j < rightP - 1){
quickSort(data, ++j, rightP);
}
}
return data;
}
private void exchangeData(int[] data, int a, int b){
int tmp = data[a];
data[a] = data[b];
data[b] = tmp;
}
public void printResult(int[] data, String msg){
System.out.print(msg);
for(int i = 0; i < data.length; i++)
{
System.out.print(" " + data[i] + " ");
}
System.out.println("");
}
public static void main(String []args)
{
int[] data={4,6,2,9,5,21,7,23,43,34,11,1};
QuickSort qs = new QuickSort();
qs.printResult(data, "Before Quick Sorting: ");
data = qs.quickSort(data, 0, data.length-1);
qs.printResult(data, "After Quick Sorting : ");
}
}Top
8 楼wuya7002(乌鸦)回复于 2005-08-02 15:25:25 得分 0
多谢几位拉!!Top




