选择排序:
代码逻辑:
1 package cn.lk; 2 3 public class Demo01 { 4 public static void main(String[] args) { 5 6 int a[]={1,58,62,45,874,12,496,152,123,-5,-45,-9}; 7 8 9 10 11 12 //--选择排序法 13 //--第一层for循环表示现在正在选择的下标元素,i等于几,就是选择的哪个元素 14 for(int i=0;i<a.length;i++){ 15 //-用一个临时变量tmp1先将当前选择的元素下标存起来 16 int tmp1=i; 17 //--第二层for循环表示:选出一个比第一层循环选出的元素下标大一的另一个元素,即在第二层循环中选出第二个元素与第一层所选出的元素进行大小比较 18 for(int j=i+1;j<a.length;j++){ 19 if(a[j]>a[tmp1])//-符号设置升序或者降序 20 21 tmp1 = j; //-如果符合条件,将第二循环选出的元素的下标给临时变量tmp1,之前tmp1里存的下标不要了。 22 } 23 //--注意!,以下的代码是第一层for循环的代码,也就是说,第一层for循环选中一个元素后,一直是第二层for循环选中的元素在变,直到和第二层选择的元素全部比完,确定了没有元素比第一层循环选择的元素大(或小)了,才开始排序 24 int tmp2; //-定义第二个临时变量tmp2 25 tmp2 = a[i]; //-将第一层for循环选中的元素赋值给临时变量tmp2 26 a[i] = a[tmp1]; //-将经过比较符合条件的元素再赋值给第一层循环选中的元素 27 a[tmp1] = tmp2; //-最后实现了将比较中较大的元素与第一层for循环选中的元素互换 28 29 } 30 for (int i : a) { 31 System.out.println(i); 32 } 33 34 35 36 } 37 }
代码实现:
1 int nums [] = {1,34,56,8,-32,7,-9,0,235};
2 for(int i=0;i<nums.length;i++){
3 int tmp = i;
4 for(int j=i+1;j<nums.length;j++){
5 if(nums[j]<nums[tmp]){
6 tmp = j;
7 }
8 }
9 //换 tmp 和 i 指向的数
10 int x = nums[tmp];
11 nums[tmp] = nums[i];
12 nums[i] = x;
13 }
14 for(int x : nums){
15 System.out.println(x);
16 }