- package test;//选择排序
- //需求:对数组{34,19,11,109,3,56}进行“选择排序”
- /* 分析:
- * 数组 {34,19,11,109,3,56}
- * 角标 0 1 2 3 4 5
- * 第一轮:0角标上的元素和1,2,3,4,5角标上的元素分别进行比较,如果0角标小,不用动,否则交换位置
- * 第一轮 0---->1,2,3,4,5 0和1,2,3,4,5比较
- * 第二轮 1----> 2,3,4,5 1和 2,3,4,5比较
- * 第三轮 2----> 3,4,5 2和 3,4,5比较
- * 第四轮 3----> 4,5 3和 4,5比较
- * 第五轮 4----> 5 4和 5比较
- *
- 该列对应外循环 横线右边 对应内循环
- *
- * 一共5轮,第几轮对应外循环,外循环0到4,5取不到 for(int x=0;x<arr.length-1;x++){ }
- * 内循环是每一轮比较的次数,第一轮5次,第二轮4次……
- * 每一轮 内循环y的初始值都不一样,所以这也就说明y的初始值不确定,不能指定具体的值,看y和行x有什么关系,y=x+1
- * 那内循环y的取值呢,第一个值和最后一个都值能取到,所以是y<arr.length
- * 明确1 有没有返回值?没有
- * 明确2 有没有未知内容参与?有 数组 int[]
- * */
- public class test25 {
- public static void main(String args[]){
- int [] arr ={34,19,11,109,3,56};
- sortArr(arr);
- //System.out.println(arr);//直接打印数组是个什么东西,只能是遍历才能取出来,遍历打印
-
- for(int i=0;i<arr.length-1;i++){
- System.out.print(arr[i]+",");
- }
-
-
- }
- public static void sortArr(int []arr){
- for(int x=0;x<arr.length-1;x++){//对应有几轮
- for(int y=x+1;y<arr.length;y++){//对应每轮比较几次
- if(arr[x]>arr[y])//目的是x这边放最小的,如果是arr[x]>arr[y]就要交换
- {
- int temp = arr[x];
- arr[x] = arr[y];
- arr[y] = temp;
-
- }
-
- }
- }
-
- }
- }
复制代码 |