java编程将一组数组元素按照由大到小降序排列.

java编程将一组数组元素按照由大到小降序排列.,第1张

int[] array = {1,2,5,8,12}; //随便定义一个数组,用冒泡排序法
for (int i = 0;i < arraylength;i++){
for(int j = i;j < arraylength;j++){
if (array[i] < array[j]){
int temp = array[i];
array[i] = array[j];
array[i] = temp;
}
}
}
或者你有一个数组
List list = new ArrayList();
listsort();

        /
  str(需要排序的字符串),desc(true:从小到大,false:从大到小)
  @param str
  @param desc
 /
public static void stringSort(String str,boolean desc){
char[] array=strtoCharArray();
if(desc){//从小到大排序
for (int i = 0; i <arraylength; i++) {
for(int j=0;j<arraylength-i-1;j++){
if(array[j]>array[j+1]){
char temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
Systemoutprint("从小到大:");
for (int i = 0; i < arraylength; i++) {
if(i==arraylength-1){
Systemoutprintln(array[i]);
}else{
Systemoutprint(array[i]+",");
}
}
}else{
for (int i = 0; i <arraylength; i++) {
for(int j=0;j<arraylength-i-1;j++){
if(array[j]>array[j+1]){
char temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
Systemoutprint("从小到大:");
for (int i = 0; i < arraylength; i++) {
if(i==arraylength-1){
Systemoutprintln(array[i]);
}else{
Systemoutprint(array[i]+",");
}
}
}
}

在排序中,最重要的是自己实现自己的比较的行数,即是implements Comparator
实现方法 public int compare(Object o1, Object o2) 最为重要
举个例子:
package bookarrayset;
import javautilComparator;
/
整数比较器,将整数按降序排列
/
class MyIntComparator implements Comparator{
/
o1比o2大,返回-1;o1比o2小,返回1。
/
public int compare(Object o1, Object o2) {
int i1 = ((Integer)o1)intValue();
int i2 = ((Integer)o2)intValue();
if (i1 < i2){
return 1;
}
if (i1 > i2){
return -1;
}
return 0;
}
}
//上面的为比较的函数实现,下面真正的添加数据,
//通过调用上面的比较函数实现自定义排序的功能
package bookarrayset;
import javautilArrayList;
import javautilCollections;
import javautilList;
/
对List中的元素排序
/
public class SortList {

public static void output(List list){
if (list == null){
return;
}
for (int i=0; i<listsize(); i++){
Systemoutprint(listget(i)toString() + " ");
}
Systemoutprintln();
}

public static void main(String[] args) {
List list = new ArrayList();
listadd(new Integer(5));
listadd(new Integer(8));
listadd(new Integer(1));
listadd(new Integer(3));
listadd(new Integer(2));
listadd(new Double(31));
Systemoutprintln("list开始状态");
SortListoutput(list);
//Collectionssort方法将用默认比较器排列list的元素
Collectionssort(list);
Systemoutprintln("list被默认比较器排序后的状态");
SortListoutput(list);
//下面将list的元素按降序排列
Collectionssort(list, new MyIntComparator());
Systemoutprintln("list被自定义比较器排序后的状态");
SortListoutput(list);

//因此,对于任意自定义类的对象,当保存在集合类容器中后,如果需要对它们进行排序,
//需要自己提供适应于自定义类的比较器,自定义比较器必须实现Comparator接口。
//然后采用Collectionssort(list, comparator);方法对容器进行排序。
}
}

你的数组声明跟初始化没有正确
import javautilArrayList;
import javautilList;
import javautilScanner;
/
任意输入东西,以"空格"间隔
当输入不是数字时,重新输入
输入正确后,用回车结束输入的数字
最后升序输出

@author Yang
/
public class JJArrangedNumbers
{
public static void main(String args[])
{
new ArrangedNumbers();
}
}
/
任意输入数字,并按升序排列输出

@author Yang
/
class ArrangedNumbers
{
Integer arryNum[] ;
int count = 0;//统计数字
public ArrangedNumbers()
{
thisinputNum();
thiscompareNum();
thisoutputNum();
}
/
@inputNum 任意输入字符,并判断为数字
/
public void inputNum()
{
boolean judgeIsNum = true;
StringBuffer sb = new StringBuffer();
Scanner s = new Scanner(Systemin);
while(judgeIsNum)
{
Systemoutprintln("请任意输入数字,以空格间隔,以回车结束!");
String character = snextLine();
char[] figures = charactertoCharArray();
for(int i=0;i<figureslength;i++)
{
if(!(figures[i]>='1' && figures[i]<='9') && figures[i]!=32)
{
judgeIsNum = true;
break;
}
judgeIsNum = false;
}
if(!judgeIsNum)
sbappend(character);
}
String inputContent = sbtoString();
List<Integer> dbList = new ArrayList<Integer>();
String[] numbers= inputContentsplit("\s+");
for (int i=0;i<numberslength;i++)
{
try
{
dbListadd(IntegerparseInt(numbers[i]));
count++;
}
catch(Exception e)
{
//如果不出现异常,则说明肯定是数字。
}
}
arryNum= new Integer[count];
int c=0;
for (Integer inNumber :dbList)
{
arryNum[c] = inNumber ;
c++;
}
}
/
@compareNum 对数字进行排序
/
public void compareNum()
{
for (int i=0;i<arryNumlength;i++)
{
for (int j=0;j<arryNumlength-i-1;j++)
{
if(arryNum[j]>arryNum[j+1])
{
Integer temp = arryNum[j];
arryNum[j] = arryNum[j+1];
arryNum[j+1] = temp;
}
}
}
}
/
@outputNum 按升序排列输出
/
public void outputNum()
{
Systemoutprintln("按升序排序:");
for(int i=0;i<arryNumlength;i++)
{
Systemoutprintln(arryNum[i]);
}
}
}
这个样子就可以了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13397320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存