java快速排序-自己的总结

来源:互联网 发布:大数据时代马云 编辑:程序博客网 时间:2024/05/17 22:49

需求是创建一些乱序的数组,然后使用选择排序来进行排序,

上学就学过的基本方法但是从没有好好跟过代码的运行过程,

所以决定勤奋一次,并且把每个地方都仔细的写下解释。



public class maopao1 {
//选择排序
public static void main(String[] args)
{

int[] num=new int[10];                                             //创建一个长度为10的数组,现在数组内没有任何内容只是开辟了需要的内存空间,ps:new出的值存放在堆中!。

for(int i=0;i<10;i++)
{
num[i]=(int)(Math.random()*100)+1;            //使用random方法创建随机数,*100是为了控制范围,+1是因为random是从0开始的,本次数组不要0!

}
selectSort(num);
for(int i=0;i<10;i++)
{
System.out.print(number[i]+",");
}

}

public static void selectSort(int[] number)
{

for(int i=0;i<number.length-1;i++)                          //第一次循环取第一个数拿出来跟第二次循环取出来的数相比,至于为什么要length-1,是因为j比i大一个,当i循环到                                                                                                      //倒数第二位时,j已经是最后一位了,所以不需要将i循环到最后一位了,已经比较过了,不需要再比较了

{
System.out.println("第"+i+"圈");                     //监控到走到第几次循环了,
int a=i;                                                                  //定义一个a值等于i,
for(int j=i+1;j<number.length;j++)                  //将j定义时比i大一个,是因为两个数如果都是从下脚标的0位开始取,就会取到相同的数字了,没有比较的意义了
{
if(number[j]<number[a])                          //判断下脚标j对应的数据如果小于下脚比i对应的数据,则把j赋值给a。
{
a=j;
}
System.out.println("j="+j);

System.out.println("m="+m);

//程序运行时由于在次层循环中是i不变j变大,所以会导致j不断的赋值给a,但是只会把越来越小的值赋值给a,所以最后赋值那个一定是最小的那个。

                                //将最大或者最小的那个一个数字一次查找出来,

//再次进行遍历的时候就可以少遍历一行了,
//举例,第一次查询所有,第二次就查询所有减1,第三次查询所有减2,以此类推
}

if(i!=a)
{
swap(number,i,a);//对应下脚标的数字互换位置
}
}
}
//数组内的两个数字做互换位置的方法。
public static void swap(int[] number,int i,int j)
{
int t;
t=number[i];
number[i]=number[j];
number[j]=t;
}




}
0 0
原创粉丝点击