首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

关于选择排序的方法,该怎么处理

2012-04-23 
关于选择排序的方法我的类程序:package com.sodi.testpublic class Ssort {/** * @param args */public s

关于选择排序的方法
我的类程序:
package com.sodi.test;

public class Ssort {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int []intArray={12,11,45,6,8,43,40,57,3,20};
int keyValue;
int index;
int temp;
System.out.println("排序前的数组");
for (int i = 0; i < intArray.length; i++) 
System.out.println(intArray[i]+"");
System.out.println();
for (int i = 0; i < intArray.length; i++) {
index = i;
keyValue = intArray[i];
for (int j = i; j < intArray.length; j++) {
if (intArray[j]< keyValue) {
index = j;
keyValue=intArray[j];
}
temp =intArray[i];
intArray[i]=intArray[index];
intArray[index]=temp;
}
}
System.out.println("排序后的数组");
for (int i = 0; i < intArray.length; i++) 
System.out.println(intArray[i]+" ");

}

}

运行后:数组排序不对,请问有什么问题吗?
排序前的数组
12
11
45
6
8
43
40
57
3
20

排序后的数组
6  
11  
12  
45  
8  
43  
40  
57  
3  
20

[解决办法]
[code=Java][/code]public static void main(String[] args) {
int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20 };
int keyValue;
int index;
int temp;
System.out.println("排序前的数组");
for (int i = 0; i < intArray.length; i++)
System.out.print(intArray[i] + " ");
System.out.println();
for (int i = 0; i < intArray.length; i++) { 
index = i;
keyValue = intArray[i];
for (int j = i; j < intArray.length; j++) {
if (intArray[j]< keyValue) {
index = j;
keyValue = intArray[j];
}
}
temp = intArray[index];
intArray[index] = intArray[i];
intArray[i] = temp;
}
System.out.println("排序后的数组");
for (int i = 0; i < intArray.length; i++)
System.out.print(intArray[i] + " ");
}
[解决办法]
for (int i = 0; i < intArray.length; i++) { 
index = i;
keyValue = intArray[i];
for (int j = i; j < intArray.length; j++) {
if (intArray[j]< keyValue) {
index = j;
keyValue = intArray[j];
}
}
temp = intArray[index];
intArray[index] = intArray[i];
intArray[i] = temp;
}


这段循环中,循环j的大括号放错地方了~
[解决办法]

Java code
        int [] intArray={12,11,45,6,8,43,40,57,3,20};        Arrays.sort(intArray);        System.out.println(Arrays.toString(intArray));
[解决办法]
http://javagp.group.iteye.com/group/topic/12478

参考下
[解决办法]
真是无语啊,你在J循环里面干嘛要用到I,这样子你每次都是跟固定的值在比较了,这明显是错误的啊。
/**
 * 排序
 */
public class Compositor
{
private static int[] ints = {12, 11, 45, 6, 8, 43, 40, 57, 3, 20};

private static int param;

/**
* main函数
* @param args
*/
public static void main(String[] args)
{
for (int i = 0; i < ints.length; i++)
{
for (int j = 0; j < ints.length; j++)
{
if (j != ints.length - 1 && ints[j] > ints[j + 1])
{


param = ints[j];
ints[j] = ints[j + 1];
ints[j + 1] = param;
}
}
}
for (int in : ints)
{
System.out.print(in + " "); //$NON-NLS-1$
}
}
}

热点排行