java插入排序问题(字符串,一位数,二位数均能排序,但一位数与二位数混合排序不了,求解决)

hqitboy 2016-10-23 12:04:57
import java.util.Scanner;

public class insertionSort {
public static void sort(Comparable<String>[] a){//将a[]按升序排列
int N = a.length;
for(int i = 1;i < N;i++){//将a[i]插入到a[i-1]、a[i-2]、a[i-3]···之中
for(int j = i;j > 0 && less(a[j],a[j-1]);j--)
exch(a,j,j-1);
}
}

private static boolean less(Comparable<String> v,Comparable<String> w){//比较两者大小,前者小于后者返回ture
return v.compareTo((String) w) < 0;
}

private static void exch(Comparable<String>[] a,int i,int j){// 交换两个数组
Comparable<String> t = a[i];
a[i] = a[j];
a[j] = t;
}

private static void show(Comparable<String>[] a){//在单行中打印数组
for(int i = 0;i<a.length;i++)
System.out.print(a[i] + ",");
System.out.println();
}

public static boolean isSorted(Comparable<String>[] a){//测试数组元素是否有序
for(int i = 1;i < a.length;i++)
if(less(a[i],a[i-1])) return false;
return true;
}

public static void main(String[] args) {

Scanner s = new Scanner(System.in);
System.out.println("请输入要排序的一组数并用逗号隔开:");
String inputString = s.next().toString();
String stringArray[] = inputString.split(",");
@SuppressWarnings("unchecked")
Comparable<String> a[] = new Comparable[stringArray.length];
for(int i = 0;i < stringArray.length;i++){
a[i] =(String)stringArray[i];
}
sort(a);
assert isSorted(a);
System.out.println("排序的结果为:");
show(a);
s.close();
}
}
...全文
163 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧