为了方便大家理解,我尽量写的浅显易懂,同时希望大家把不理解的发到评论中,我会尽所能,帮助你l理解。
欢迎qq进行交流问题:
本人QQ :1770115451 算法交流群: 1061907071
选择排序算法:
总体思路:
对数组进行遍历,找出一个最大的元素,并将该元素,放到最后的位置去,(同时,由于本次最大的元素位置已经确定好了,因此下一次的最大元素的位置,一定在前一个位置)我们可以把数组想象成一个天花板的结构,每确定出一个最大元素,放到天花板的位置,同时天花板的位置减一)当天花板的高度为0时,排序结束。
算法实现步骤:
1.创建一个循环,从最后的位置,到0。(天花板从高到低的循环)
2.声明一个最大元素的变量(记录他的下标和值)
3.创建一个在天花板的范围内的循环,不断更新最大元素的值和下标
4.将一轮循环得出的最大值,与天花板的位置进行交换。
关键代码:
1 //选择排序法 2 public static void chooseSort (int arr[]){ 3 //1.天花板的高度从高到低逐次递减 4 for(int celing = arr.length-1;celing>=0;celing--){ 5 //2.先将第一个元素作为最大的元素 6 int maxIndex = 0;//最大元素的下标 7 int max = arr[0];//最大元素的值 8 9 //3.对天花板下面的每一个元素进行遍历,寻找最大的一个元素,并更新 10 for(int i=0;i<=celing;i++){ 11 int N = arr[i]; //获取当前元素 12 //更新最大的元素 13 if(N>max){ 14 maxIndex = i; //更新最大元素下标 15 max=arr[i]; //更新最大元素的值 16 } 17 } 18 //4.找到最大的元素后,与天花板的位置进行交换 19 swap(arr, maxIndex, celing); 20 } 21 printarr(arr); 22 }
//交换数组元素方法 public static void swap (int arr[],int i ,int j){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }
最后希望看到这篇随笔的朋友们:
希望你们在学习算法的道路不迷茫,一定要坚持下来,加油! ^ . ^