java 简单排序我们先来看一下选择排序:
假设有数字int a[] = {6,3,1,2,3};首先我们选择一个位置为最小元素,期初我们是不知道那个位置的元素是最小的,我们可以先默认选择第一个位置的元素是最小的元素,好了我们设置该位置为min=0;即就是我们的第一个元素的位置,这里指的是位置,切记.那么我们通过这个位置取得的元素的值就是6,然后他和该位置后面的元素进行比较:
第一次:6大于3,我们把最小的元素的位置标记为3的位置,也就是min=1;
第二次:3和1比较,3大于1,我们把最小的元素的位置标记为1的位置就是min=2;
第三次:1和2比较,1小于2,min的位置不变,还是min=2;
第四次:1和3比较,1小于3,还是位置不变,还是min=2;
好了,比较完毕
第五步:把min=2代表的位置的元素1和我们初始min位置0代表的元素6进行赋值变换就可以了,这个是第一次循环我们最后 得带的数字是:
int a[]={1,3,6,2,3}
第二次循环我们是min默认开始的位置是1,根据我们的上面的推理这一次循环完毕交换元素之前我们的min定位是min=3,那么我们把min=3代表的元素2,和min的初识值min=1,元素3互换,
int a[] ={1,2,6,3,3}
第三次循环:min初识位置min=2,代表元素是6,循环执行完毕,没有互换元素之前,min定位是min=3,代表元素第一个3,互换之后
int a[]={1,2,3,6,3}
第四次循环:初识位置min=3,代表元素是6,循环结束min 定位min=4,代表元素是3,与出世位置的元素交换
int a[]={1,2,3,3,6}
到此我们的排序结束,我们来看一下代码:是不是 和我们推理的一样:
我们来执行一下看看与我们推理的是否一致:/** * Created by luyangli on 16-7-3. */ public class SelectSort { public static void main(String[] args) { // int a[] = {1,2,3,4,5,6,3,1,2,3}; int a[] = { 6, 3, 1, 2, 3 }; System.out.println("初始数组是:" + Arrays.toString(a)); for (int i = 0; i < a.length - 1; i++) { int min = i; System.out.println("第" + (1 + i) + "次循环min的初始位置是:" + i); for (int j = i + 1; j < a.length; j++) { if (a[min] > a[j] && a[min] != a[j]) { min = j; } } System.out.println("第" + (1 + i) + "次循环结束还没有互换元素min的最终位置是:" + min); int temp = a[i]; a[i] = a[min]; a[min] = temp; System.out.println("第" + (1 + i) + "次循环结束数组是:" + Arrays.toString(a)); } System.out.println("循环结束数组是:" + Arrays.toString(a)); } }
初始数组是:[6, 3, 1, 2, 3]
第1次循环min的初始位置是:0
第1次循环结束还没有互换元素min的最终位置是:2
第1次循环结束数组是:[1, 3, 6, 2, 3]
第2次循环min的初始位置是:1
第2次循环结束还没有互换元素min的最终位置是:3
第2次循环结束数组是:[1, 2, 6, 3, 3]
第3次循环min的初始位置是:2
第3次循环结束还没有互换元素min的最终位置是:3
第3次循环结束数组是:[1, 2, 3, 6, 3]
第4次循环min的初始位置是:3
第4次循环结束还没有互换元素min的最终位置是:4
第4次循环结束数组是:[1, 2, 3, 3, 6]
循环结束数组是:[1, 2, 3, 3, 6]
看来结果就是我们推理这个样子,这就是我们的选择排序,他是定位,位置,位置,位置,每一次都是选择最小元素的位置进行排序的.