黑马程序员技术交流社区
标题:
选择排序方法2! 小疑问求解答!
[打印本页]
作者:
迷茫不堪的年纪
时间:
2015-10-10 18:22
标题:
选择排序方法2! 小疑问求解答!
class ArrayDemo
{ public static void main(String[]args) {
int[]arr={2.5.1.6.3};
System.out.print("数组排序前:");
printArray(arr); //调用下面定义的输出语句
selectSofr(arr); //主函数下面定义的排序方法
System.out.print("数组排序后:");
printArray(arr); //调用下面定义的输出语句
}
public staic void selectSort(int[]arr) //选择排序方法定义
{
for(x=0;x<arr.length-1;x++) // x<arr.length-1 是代表最大值? 还是只是长度减掉最小值的长度?
{
int num=arr[x]; //定义个变量代表 数组里的一个元素哦
int index=x; // 定义角标 --------------------俩者一起来定义最小值和最小值的角标, 效率提高
for(y=x+1;y<arr.length;y++) //同理
{
if(num>arr[y]) //条件式
num=arr[y];
index=y;
}
}
if(index !=x) //条件式, 只要角标值不等于x的角标,及执行以下的操作,如果最小值就是x自己就没必要执行这个了!
swap(arr,x,index) //这个大家请看下面这个定义哦
}
}
public static void swap(int[]arr,int a ,int b) //这玩意儿的定义提升了复用性,不用像第一次方法一样每一次搞个换位都打一堆。
int temp = arr[a];
arr[a]=arr[b] ;
arr[b]=temp;
}
public static void pritnArray(int[]arr) //之前帖子方法1有讲
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x != arr.length-1);
System.out.print(arr[x]+",");
elas
System.out.print(arr[x]+"]");
}
}
不确定点求解惑:1.x<arr.length-1 是代表最大值? 还是只是长度减掉最小值的长度?
2.swap的意义?
有错误及时指出哦, 谢谢。
作者:
ly631960324
时间:
2015-10-10 19:30
x<arr.length-1 ——arr.length-1 是最大角标;x<最大角标,因为后面定义了y=x+1,则y<arr.length,则符合要求。解释一下:如果数组长度为5,运用选择排序,那么角标最大为4,则x最大只能是3,因为最后是角标3的元素和角标4的元素比较。
swap的意义——定义的一个方法,用来简化程序,当需要对元素进行交换是,就可以直接调用这个方法,简便了许多。
作者:
yuyucoo
时间:
2015-10-10 19:50
1、数组arr的最大下标是arr.length-1,因为数组下标是从0开始的 2、swap是static修饰的静态方法,调用不用new对象,可以直接类名.方法名()调用,本文中wap()函数是把数组arr下标a和b的值交换。
作者:
迷茫不堪的年纪
时间:
2015-10-10 21:35
yuyucoo 发表于 2015-10-10 19:50
1、数组arr的最大下标是arr.length-1,因为数组下标是从0开始的 2、swap是static修饰的静态方法,调用不用 ...
下标是什么意思? 还有是 本文中的wap是 swap吧?
作者:
迷茫不堪的年纪
时间:
2015-10-10 22:03
第一个回答的不错。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2