黑马程序员技术交流社区
标题:
选择排序编译出现问题
[打印本页]
作者:
张龙跃
时间:
2013-4-25 21:00
标题:
选择排序编译出现问题
本帖最后由 张龙跃 于 2013-4-25 21:37 编辑
代码
class xuanze
{
public static void selectSort(int[] arr)
{
for (int x=0; x<arr.length-1 ; x++) //arr.length-1是因为最后一个角标不用再比了,也可以直接写arr.length
{
for(int y=x+1; y<arr.length; y++) //y=x+1是因为0角标跟0角标比没意思,直接跟1角标比
{
if(arr[x]>arr[y])
{
int temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
}
}
}
}
public static void main(String[] args)
{
int[] arr = {5,1,6,4,2,8,9};
selectSort(arr);
System.out.println(int[] arr);
}
}
1.jpg
(46.17 KB, 下载次数: 21)
下载附件
2013-4-25 21:00 上传
作者:
尹丽峰
时间:
2013-4-25 21:04
本帖最后由 尹丽峰 于 2013-4-25 21:27 编辑
System.out.println(int[] arr); 有这么写的吗??
public class arraydemo {
public static void main(String args[]) {
int[] arr = new int[] { 3, 5, 6, 1, 23, 4 };
Arrxzpx(arr);
showArr(arr);
}
public static void Arrpx(int arr[]) {
for (int x = 0; x < arr.length; x++) {
for (int y = 0; y < arr.length - x - 1; y++) {
if (arr[y] > arr[y + 1])//冒泡了 {
int temp = arr[y];
arr[y] = arr[y + 1];
arr[y + 1] = temp;
}
}
}
}
public static void Arrxzpx(int arr[])
{
for(int x=0;x<arr.length;x++)
{
for(int y=0;y<arr.length;y++)
{
if(arr[y]<arr[x])//这是你要的
{
int temp = arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
}
}
}
public static void showArr(int arr[])
{
for(int x=0;x<arr.length;x++)
{
System.out.print(arr[x]+"\t");
}
}
}
作者:
harborbest
时间:
2013-4-25 21:12
System.out.println(int[] arr);
写法不对,应该这样写
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
复制代码
作者:
smile_joe
时间:
2013-4-25 21:21
package cn.joe.FileandRecursion;
public class Test1 {
public static void main(String[] args)
{
int [] arr = {5,1,6,4,2,8,9};
selectSort(arr);
// System.out.println(int[] arr); 你这个输出的是什么,输出变量?
// 用遍历方法在遍历得到全部
sort(arr);
}
// 遍历方法
private static void sort(int[] arr) {
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
}
// 排序
public static void selectSort(int[] arr)
{
for (int x=0; x<arr.length-1 ; x++) //arr.length-1是因为最后一个角标不用再比了,也可以直接写arr.length
{
for(int y=x+1; y<arr.length; y++) //y=x+1是因为0角标跟0角标比没意思,直接跟1角标比
{
if(arr[x]>arr[y])
{
swap(arr, x, y);
}
}
}
}
// 数组调换方法
private static void swap(int[] arr, int x, int y) {
int temp = arr[x];
arr[x] = arr[y];
arr[y]= temp;
}
}
//对你的程序进行了完善,感觉你对需求都不是明确,希望互相学习.....
作者:
一川
时间:
2013-4-25 21:30
main函数中的输出语句错了,System.out.println(int[] arr); 数组是不可以整体输出的.
可以用循环语句输出,最好写个方法,可以复用(排序前和排序后)
如:
public static void PrintArray(int[] arr){
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
复制代码
作者:
一川
时间:
2013-4-25 21:31
main函数中的输出语句错了,System.out.println(int[] arr); 数组是不可以整体输出的.
可以用循环语句输出,最好写个方法,可以复用(排序前和排序后)
如:
public static void PrintArray(int[] arr){
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i]+" ");
}
System.out.println();
}
复制代码
作者:
337091921
时间:
2013-4-25 22:05
我看了你的程序,你犯了一个大错误就是:你定义的函数是无返回值类型的。所以你不能直接在主函数输出;可以在定义函数里面输出你的结果。要想在main输出就要遍历一个函数。希望你谨记
作者:
赵崇友
时间:
2013-4-25 22:07
System.out.println(int[]arr);
这句是不正确的。int[]arr是在声明arr是一个int类型的数组,是不能够打印的。使用增强for循环可以简化输出语句。我做了一下改动,楼主可以看看。
class SelectSort
{
public static void main(String []args)
{
int [] arr={5,1,6,4,2,8,9};
selectSort(arr);
for (int i:arr )
{
System.out.print(i+",");
}
}
public static int[] selectSort(int[]arr)
{
for (int x=0;x<arr.length-1 ;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;
}
}
}
return arr;
}
}
复制代码
另外建议楼主写代码可以排下版。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2