我认为这个问题和排序算法没什么关系,用什么排序都可以,最笨的冒泡,或者用的比较多的快速排序都行。
首先是考虑好这些item(丙方、乙方、辛方、庚方)如何比较大小的问题,按照描述,实际上是按照甲乙丙丁这个顺序来排序的对吧,那就可以搞个enum,enum的name可以是甲乙丙丁的任意一个,而value就是0123这样,就是说甲是0,乙是1,以此类推,这样等我用排序算法比较的时候就知道只要比较其value就可以,而输出的时候输出name就可以了。
所以说你想好了这个之后,用什么样的排序算法都可以,至于排序算法是被无数人嚼了无数次的东西,我就不上网搜了之后给你贴了,排序算法这个东西还是要自己写一遍才行,看别人写的总是不行的。
实现一个Comparator就可以了
代码如下:
import java.util.Arrays;
import java.util.Comparator;
public class ChineseSort {
public static void main(String[] args) {
String[] list = {
"丙方",
"乙方",
"甲方",
"辛方",
"戊方", };
System.out.println("排序前: " + Arrays.toString(list));
sort(list);
System.out.println("排序后: " + Arrays.toString(list));
}
public static void sort(String[] args) {
Comparator
@Override
public int compare(String o1, String o2) {
return getIndex(o1) - getIndex(o2);
}
};
Arrays.sort(args, comparator);
}
private static int getIndex(String s) {
for (int i = 0; i < DEFAULT_ARRAY.length; i++) {
if (s.equals(DEFAULT_ARRAY[i])) {
return i;
}
}
throw new RuntimeException("输入文字错误");
}
private static final String[] DEFAULT_ARRAY = {
"甲方",
"乙方",
"丙方",
"丁方",
"戊方",
"己方",
"庚方",
"辛方",
"壬方",
"癸方" };
}
题目的意思是在数组list中 可以被2整除的就输出,并且把输出的数的前面一个也跟随输出。
比如:我List中放入:丙方、乙方、辛方、庚方。输出List存放顺序是:乙方、丙方、庚方、辛方。
乙方排第2,可以输出,然后把第二前面那个也就是第一那个输出,为丙方。
但是在数组中根据其下标从0开始的,所以我们要方向编程,下标不可以整除2的输出,并输出其前面的数,
package C_Data;
public class paixu {
public static void main(String []args){
String[] list={"甲方","乙方","丙方","丁方","戊方","己方","庚方","辛方","壬方","癸方"};
int i;
for( i=0;i<11;i++){
if(i%2!=0){
System.out.print(" "+list[i]);
System.out.print(" "+list[i-1]);
}}
}
}
汉字排序,只能按照拼音排序,或者unicode之类的编码排序.
我们常说的甲乙丙丁和赵钱孙李,都是我们认为编排的顺序,没什么规律的.所以在计算机来看是不可能的,除非你把排序事先规定好.
循环遍历数组 然后 用数组中的每个元素和排列顺序进行比较 如果吻合就拿出来 放到一个新的集合里面 如果都不吻合 就比较下一个元素 数组中的所有元素比较完成后 只要遍历新的集合中的每个数据就可以了