本帖最后由 帅飞 于 2014-5-7 01:08 编辑
class arrPaixu
{
public static void main(String[] args)
{
int [] arr={52,13,65,13,96,22,162};
arrprint(arr);//打印初始数组-----------------结果为 52 13 65 13 96 22 162
System.out.println();//换行
arrsheng(arr);//升序排列---------------------结果为 13 13 22 52 65 96 162
System.out.println();//换行
arrprint(arr);//打印当前内存里的数组---------结果为 13 13 22 52 65 96 162
System.out.println();//换行
arrjiang(arr);//降序排列---------------------结果为 162 96 65 52 22 13 13
System.out.println();//换行
arrprint(arr);//打印当前内存里的数组---------结果为 162 96 65 52 22 13 13
}
//降序排列
public static void arrjiang(int[] arr)
{
for ( int x=0;x<arr.length ;x++ )
{
for (int y=x+1;y<arr.length;y++ )
if (arr[x]<arr[y])
{
arr[x]=arr[x]^arr[y];
arr[y]=arr[x]^arr[y];
arr[x]=arr[x]^arr[y];
/* x=x^y;
y=x^y;
x=x^y;
问题:这样是无法实现的,为什么???怎么能用角标的变换,,而不是元素值的变换来实现排序问题???
*/
}
System.out.print(arr[x]+"\t");
}
}
//升序排列
public static void arrsheng(int [] arr)
{
for ( int x=0;x<arr.length ;x++ )
{
for (int y=x+1;y<arr.length ;y++ )
if (arr[x]>arr[y])
{
int temp = arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
System.out.print(arr[x]+"\t");
}
}
//打印当前内存中的数组
public static void arrprint(int [] arr)
{
for (int x=0;x<arr.length ; x++)
{
System.out.print(arr[x]+"\t");
}
}
}
—————————————————————————————————————————————————————
问题是,,使用选择排序时,,在升降序函数里,关于数组内两个元素相比较,然后交换,然后再与其他元素比较,这个运算过程是否可以用元素的角标实现?如果可以实现的话,请附代码,谢谢。
|
|