因之前拿代码格式搞得大家都看不到,故在注释一次, 满脸泪...
以下均为个人观点和理解,有错误的话请及时告知我哦!
逻辑:首先我们需要定义一个方法来时间排序的功能, 同时我们需要修饰一下我们的结果,让使用者见名知意所以给输出方面我们也定义一个
选择排序=由小到大=拿0角标的数值去和其他角标挨个去比较,只要比0角标值小的就替换掉,最后最小的会在左边。 举例一个: 12654 选择排序就是 会让1和2654挨个比较,最后输出12654。
class ArrayDemo
{
public static void main(String[] args)
{
int[] arr= {3,6,9,2,4,1}; //随便定个数组
System.out.print("排序前数组:" );
printArray(arr); //调用下面定义的输出方法
selectSort(arr); //调用下面定义的排序方法
System.out.print("排序后数组:" );
printArray(arr); //调用下面定义的第二次输出方法
}
public static void selectSort(int[] arr)
{
for(int x = 0; x < arr.length - 1; x++) //arr.length-1意思在于减少每次比较的长度,所以我们每次减掉前面已经比过的小角标
{
for(int y = x + 1; y < arr.length; y++) //x+1的意义在于, 我们不能让0角标自己比吧, 所以我们+1 让他和后面的朋友比大小
{
if(arr[x] > arr[y]) //条件式 ,决定后面换位的因素
{
int temp = arr[x]; //定义个变量z ,这里我们x,y.z来表示,x=2,y=1; 这里的意义在于z =2
arr[x] = arr[y]; //x=y 2=1
arr[y] = temp; //y=z 1=2 换位完成
}
}
}
}
public static void printArray(int[] arr) //定义输出的方法。
{
System.out.print("[" ); //首先有事儿没事儿 先输出个【
for(int x = 0; x < arr.length; x++) //遍历
{
if(x != arr.length - 1) //意思如果x 不等于 前面已经比过的小值
System.out.print(arr[x] + "," ); //输出 如 2,
else //这个是个小点。 他的意思代表的是第一次你输出的是上面的 元素和,(分隔号) ,如果你再次执行那么就是下面的“】”咯
System.out.println(arr[x] + "]" ); //输出 】 完结
}
}
}
疑惑点:arr.length-1的详细解答?
自我认为是长度减1,减去的长度是之前比较过后的最左端的值,小的那个
这是效率较低的一种排序,但是用来理解是不错的。 同时这串代码中, 没有返回操作是因为本身引用的就是数组里的,所以没有必要。
明日送上另一种的选择排序的效率方法和思想
|
|