java选择排序问题(求大神指导有什么问题?排序不了。结果为:0,1,2,3,5,8,4,9)

hqitboy 2016-10-17 01:10:33
package hq;

import java.util.Scanner;

public class selectionSort {
//将a【】按升序排列
public static void sort(Comparable[] a){
for(int i = 0;i < a.length;i++){
//将a【i】和a【i+1..n】中最小的元素交换
int min = i;//最小的元素索引
for( int j = i+1;j < a.length;j++){
if(less(a[j],a[min])) min = j;
exch(a,i,min);
}
}
}

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

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

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

public static boolean isSorted(Comparable[] 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) {
selectionSort sls = new selectionSort();
Comparable[] a = {1,3,2,5,9,0,4,8};
// Scanner s = new Scanner(System.in);
// System.out.println("请输入要排序的一组数并用逗号隔开:");
// String inputString = s.next().toString();
// s.close();
// String stringArray[] = inputString.split(",");
// Comparable a[] = new Comparable[stringArray.length];
// for(int i = 0;i < stringArray.length;i++){
// a[i] =Integer.parseInt(stringArray[i]);
// }
sls.sort(a);
assert sls.isSorted(a);
System.out.println("排序的结果为:");
sls.show(a);


}

}
...全文
186 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hqitboy 2016-10-18
  • 打赏
  • 举报
回复
谢谢你们,我明白了!
肃穆丶 2016-10-17
  • 打赏
  • 举报
回复
改两行代码: //min = j; 把它注释了 exch(a, j, min); //把 i换成j
dqsweet 2016-10-17
  • 打赏
  • 举报
回复
int min = i;//最小的元素索引 你的最小索引,在每次循环时会被赋值

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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