JAVA编程:编程实现将数组int a[]=78 23 56 34 12 45 67 89 90 1按从小到大顺序进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA编程:编程实现将数组int a[]=78 23 56 34 12 45 67 89 90 1按从小到大顺序进行排序相关的知识,希望对你有一定的参考价值。

参考技术A

数字自带有个方法

Arrays.sort(a);

int arry[]=2,1,4,3,7,9,6;

Arrays.sort(arry);

for(Integer a : arry)

System.out.println(a);

例如:

import java.util.Arrays;

public class Test

public static void main(String[] args)

int a[] = new int[]8,5,4,2,0,9;

Arrays.sort(a);

System.out.println("排序结du果是:");

for(int i=0;i<a.length;i++)

System.out.print(a[i]+" ");

扩展资料:

当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类,通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中,然后再通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用。

参考资料来源:百度百科-Java

Java编程实现中英混合字符串数组按首字母排序的方法

本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下:

在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如:

String[] arrays = new String[]  "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分", "的人", "反对高铁", "泛代数", "上的投入", "和国家" ;
/*设置语言环境*/
Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
Arrays.sort(arrays, com);
for (String item:arrays) 
 System.out.print(item+" ");



输出的结果为:“gyu sdf zf 大同 的人 地方 反对高铁 泛代数 和国家 三等分 上的投入 收到”;在Java中排列的顺序是按照数字->英文->汉字进行排序的,这种排序方式可以满足部分要求,但很多情况下我们并不希望这样排列!例如Anroid中的通讯录,音乐播放列表等等,这些情形下我们希望英文首字母和中文拼音首字母一样的排列在一起以方便查询。由于这类排序算法很复杂,例如首字母相同的字符串还要接着比较第二个、第三个…。但是如果我们将jdk自带的排序加以应用就不会显得那么复杂了;

我的想法是这样的:既然Java中排序是按数字->英文->汉字来进行排序的,那我们就把每个汉字打头的字符串前面加上一个该字符串第一个字符的拼音的首字母和一个区分符“&”,再使用jdk提供的排序函数进行排序,这时我们得到的就是我们想要的排序的数组了。然后再遍历数组,将包含&符号的字符串去掉&和第一个英文字母便完成了整个排序了,具体实现代码如下(获取汉字拼音需要引用该jar:pinyin4j-2.5.0.jar):

/**
* 将字符串数字按首字母先后进行排序 
* 
* Java原生排序为 数字->英文->中文 
* 为了将英文和中文首字母相同的排列到一起 
* 先将字符串首字符为汉字的改为该汉字的首字母加上该字符串 
* 为了以示区分中间再加一个分割符& 
* 然后使用Java原生排序算法 
* 再将包含&字符的字符串中的&和首字母去除从而达到排序目的 
* */ 
public static void main(String[] args)  
 String[] arrays = new String[]  "gyu", "sdf", "zf", "大同", "收到", "地方", "三等分", "的人", "反对高铁", "泛代数", "上的投入", "和国家" ;
 for (int i = 0; i < arrays.length; i++) 
  String str = arrays[i];
  if (str.length() == 0)
  return;
  String alphabet = str.substring(0, 1);
  /*判断首字符是否为中文,如果是中文便将首字符拼音的首字母和&符号加在字符串前面*/
  if (alphabet.matches("[\\\\u4e00-\\\\u9fa5]+")) 
  str = getAlphabet(str) + "&" + str;
  arrays[i] = str;
  
 
 /*设置排序语言环境*/
 Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
 Arrays.sort(arrays, com);
 /*遍历数组,去除标识符&及首字母*/
 for (int i=0;i<arrays.length;i++) 
  String str=arrays[i];
  if(str.contains("&")&&str.indexOf("&")==1)
  arrays[i]=str.split("&")[1];
  
  System.out.println(arrays[i]);
 
 
 public static String getAlphabet(String str) 
 HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
 // 输出拼音全部小写
 defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
 // 不带声调
 defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
 String pinyin = null;
 try 
  pinyin = (String) PinyinHelper.toHanyuPinyinStringArray(str.charAt(0), defaultFormat)[0];
  catch (BadHanyuPinyinOutputFormatCombination e) 
  e.printStackTrace();
 
 return pinyin.substring(0, 1);



这时输出结果为:“大同 的人 地方 反对高铁 泛代数 gyu 和国家 三等分 上的投入 收到 sdf zf”,大家也可以自己尝试自己写排序算法去实现,锻炼一下思维也不无坏处,呵呵。

以上是关于JAVA编程:编程实现将数组int a[]=78 23 56 34 12 45 67 89 90 1按从小到大顺序进行排序的主要内容,如果未能解决你的问题,请参考以下文章

java编程实现随机数组的快速排序

Java实现数组的中文排序

C语言编程,编程实现怎样将一个数组逆序输出?

java编程:将数组的第一个为最大第二个为最小以此类推

编程利用二维数组输出九九乘法表。

数据结构_数组