黑马程序员技术交流社区
标题:
我就纳闷了(简单的问题,高手们帮我解决下呗)(已解决)
[打印本页]
作者:
曹俊
时间:
2012-5-19 16:31
标题:
我就纳闷了(简单的问题,高手们帮我解决下呗)(已解决)
本帖最后由 曹俊 于 2012-5-19 17:15 编辑
未命名111.jpg
(74.87 KB, 下载次数: 39)
下载附件
2012-5-19 16:30 上传
大家请帮我看下这个程序,问题都在7,8,9行。问题1:第9行,我注释//Shunxu(arry); 打印出的显示是[5,1,6,4,2,8,9] 我明明调用了13行的方法,为什么没有打印出我排序后的内容?
问题2:第7行,我注释//Shunxu(arry); 打印出的显示是[1,2,4,5,6,8,9] 而第9行也调用了Shunxu(arry);方法,为什么木有打印出[5,1,6,4,2,8,9] 呢?
总的来说,我的问题就是对7,8,9行的用意不太理解,高手们,求给我个思路清晰,明确的答案,好嚒?
作者:
袁錦泰
时间:
2012-5-19 16:47
本帖最后由 袁錦泰 于 2012-5-19 17:27 编辑
public class SelectSort {
public static void main(String[] args) {
int[] arr = { 5, 1, 6, 4, 2, 8, 9 };
printArray(arr);//先打印原数组
selectSort(arr);//再调用排序功能
printArray(arr);//最后打印被排序后的数组(先调用打印方法打印的是原数组,再调用排序功能后打印的当然是被排序后的数组,无论先后他们操作的都是一个数组对象)
}
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {//数组中最后一个元素无需进行比较,你没有留意这一点
for (int j = i + 1; j < arr.length; j++) {
if (arr
> arr[j]) {
swap(arr, i, j);//位置置换应单独定义一个私有方法
}
}
}
}
private static void swap(int[] arr, int i, int j) {
arr
= arr
^ arr[j];
arr[j] = arr
^ arr[j];
arr
= arr
^ arr[j];
}
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
System.out.print(arr
+ ",");
} else {
System.out.println(arr
+ "]");
}
}
}
}
作者:
曹俊
时间:
2012-5-19 17:00
大家请帮我看下这个程序,问题都在7,8,9行。问题1:第9行,我注释//Shunxu(arry); 打印出的显示是[5,1,6,4,2,8,9] 我明明调用了13行的方法,为什么没有打印出我排序后的内容?
问题2:第7行,我注释//Shunxu(arry); 打印出的显示是[1,2,4,5,6,8,9] 而第9行也调用了Shunxu(arry);方法,为什么木有打印出[5,1,6,4,2,8,9] 呢?
总的来说,我的问题就是对7,8,9行的用意不太理解,高手们,求给我个思路清晰,明确的答案,好嚒?
作者:
Fc10232
时间:
2012-5-19 17:02
本帖最后由 Fc10232 于 2012-5-19 17:03 编辑
你写的有很多可以修改的地方:int [] array ={5,1,6,4,2,8,9}; 可以这样写的
还有输出的时候就输出,不要判断,就好比睡觉的时候不要想着看书,看书的时候不要想着睡觉
下面是我写的代码 仅供参考
public class Demo02 {
public static void main(String[] args) {
int[] array = { 5, 1, 6, 4, 2, 8, 9 };
System.out.println("排序之前!");
shunxu(array); // 这个是排序之前
paixu(array); //排序
System.out.println();//换行
System.out.println("排序之后");
shunxu(array);//再次打印
}
public static void paixu(int[] b) {
for (int i = 0; i < b.length; i++) {
for (int j = 1; j < b.length; j++) {
if (j <i) {
int temp = 0;
temp = b;
b = b[j];
b[j] = temp;
}
}
}
}
public static void shunxu(int[] a) {
for (int i : a) {
System.out.print(i + "、");
}
}
}
复制代码
可以达到你想要的效果
作者:
任睦强
时间:
2012-5-19 17:07
本帖最后由 任睦强 于 2012-5-19 17:11 编辑
package com.my.lianxi;
public class xxx {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] num = new int[]{5,1,6,4,2,8,9};
ck(num);//
这是你打印排序前的 顺序
ck1(num);//
这是你通过左手换右手的方法把这个数组从小到大排序
ck(num);//
这是你打印排序后的 顺序
}
public static void ck(int[] num)
{
for(int i:num){
System.out.print(i+",");
}
System.out.println();
}
public static void ck1(int[] num)
{
for (int i = 0; i < num.length; i++) {
for (int j = i+1; j < num.length; j++) {
if(num
>num[j])
{
int temp;
temp=num
;
num
=num[j];
num[j]=temp;
}
}
}
}
}
作者:
8161776
时间:
2012-5-19 17:12
Shunxu这个方法就是打印这个数组的内容
Paixu这个方法是把这个数组给排序
第7行是先打印没有排序的内容
第8行是排序
排序完成了,已经,所有第9行打印直接就是排序完成的内容了
作者:
陈栋
时间:
2012-5-19 17:14
首先数组是引用类型传值的;
问题1:你注释第九行,你第七行打印出原数组没有排序的内容;
问题2:你注视第七行,你第八行调用排序方法,数组已经排序,所以第九行使用shunxu方法输出的是排序后数组的内容
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2