标题:[求助]一个JAVA排序问题
只看楼主
hwj20070118
Rank: 1
等 级:新手上路
帖 子:94
专家分:0
注 册:2007-1-18
 问题点数:0 回复次数:1 
[求助]一个JAVA排序问题
有一组数,如:23,45,25,16,86,39,75,现要求按以下要求进行排序:
(1)让这些数中最大的那个数,放在第一位;最小的那个数放在第二位;
(2)让剩下的数中,最大的放在第三位,最小的放在第四位;
(3)照此类推,进行排序.

请问,应该怎样进行排序.(最好附上代码).谢谢.
搜索更多相关主题的帖子: JAVA 
2007-04-03 12:13
Eastsun
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:802
专家分:0
注 册:2006-12-14
得分:0 
给一个简单的递归解决算法吧.当然,还有更好的算法

import java.util.Scanner;
/**
*交错排序的递归算法
*@author: Eastsun
*/
public class SortArray{
private static void swap(int[] array,int a,int b){
int tmp =array[a];
array[a] =array[b];
array[b] =tmp;
}
public static void sort(int[] array,int start,int end){
if(end-start<=1) return;
if(array[start]<array[start+1]) swap(array,start,start+1);
for(int index =start+2;index<end;index++)
if(array[start]<array[index]) swap(array,start,index);
else if(array[start+1]>array[index]) swap(array,start+1,index);
sort(array,start+2,end);
}
public static void main(String[] args){
Scanner s =new Scanner(System.in);
while(true){
System.out.print(\"输入要排序数的个数(0结束):\");
int n =s.nextInt();
if(n<=0) break;
System.out.print(\"输入\"+n+\"个要排序的数:\");
int[] array =new int[n];
for(int i =0;i<n;i++) array[i] =s.nextInt();
sort(array,0,array.length);
System.out.print(\"排序结果为:\");
for(int i=0;i<n;i++) System.out.printf(\"%7d\",array[i]);
System.out.println();
}
}
}

My BlogClick Me
2007-04-03 19:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-128866-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.953879 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved