做韦恩图的在线网站wordpress下载视频
news/
2025/9/27 16:17:35/
文章来源:
做韦恩图的在线网站,wordpress下载视频,欢迎进入中国建设银行网站,上海营业执照网上申请简单选择排序的介绍#xff1a;从给定的序列中#xff0c;按照指定的规则选出某一个元素#xff0c;再根据规定交换位置后达到有序的目的。简单选择排序的基本思想#xff1a;假定我们的数组为int [] arr new int[n]#xff0c;第一次我们从arr[0]~arr[n-1]中选择出最小的…简单选择排序的介绍从给定的序列中按照指定的规则选出某一个元素再根据规定交换位置后达到有序的目的。简单选择排序的基本思想假定我们的数组为int [] arr new int[n]第一次我们从arr[0]~arr[n-1]中选择出最小的值与arr[0]交换。第二次我们从arr[1]~arr[n-1]中选择出最小的值与arr[1]交换。第三次我们从arr[2]~arr[n-1]中选择出最小的值与arr[2]交换,...,第i次我们从arr[i-1]~arr[n-1]中选择出最小的值与arr[i-1]交换,...,第n-1次我们从arr[n-2]~arr[n-1]中选择出最小的值与arr[n-2]交换。我们总共进行n-1次的交换从而得到一个由小到大的排序序列。简单选择排序的思路详解例子原始的数组[101,34,119,1]经过第一次选择排序之后我们得到的数组1,[34,119,101]经过第二次选择排序之后我们得到的数组1,34,[119,101]经过第三次选择排序之后我们得到的数组1,34,101,[119]这个时候我们的序列已经有序了并且我们执行的次数一共是是4次(n-1)。针对上述的例子我们进行说明如下(1).选择排序一共有数组大小-1(n-1)轮排序(2).每一轮排序又是一个循环我们先假定每次循环的第一个数都是最小的数然后和后面的每个数进行比较如果发现有比当前更小的数就重新确定这个最小的数并且要得到这个数的下标。依次进行循环上述过程在代码中我会通过注释说明。下面的代码中我会将选择排序通过两种代码实现分步骤的实现整体的实现。在代码中我们测试的数组是[101,34,119,1](1).分步骤的实现选择排序public static void main(String[] args) {// TODO Auto-generated method stubint[] arr {101,34,119,1};selectSort(arr);}//选择排序public static void selectSort(int[] arr){//第一趟排序System.out.println(执行的第一趟排序);//首先我们要假设第一个元素是最小的并且记录最小元素的下标这里我们分别用min,minIndex表示。int min arr[0];int minIndex 0;for(int j 10;jif(minarr[j]){ //当我们的min值大于后面的数时说明min不是最小的这时候我们将min与最小的值交换并且让minIndex索引变成最小值的索引。min arr[j];minIndex j;}}//通过上面的交换我们可以得到这趟序列中最小的元素的值。//因为我们的第一个元素是我们指定的最小元素因此在找到比第一个元素更小的元素后我们应该让其与第一个元素交换。arr[minIndex] arr[0];arr[0] min;System.out.println(Arrays.toString(arr));//接下来的几趟排序与第一趟相同//第二趟排序System.out.println(执行的第二趟排序);min arr[1];minIndex 1;for(int j 11;jif(min arr[j]){min arr[j];minIndex j;}}arr[minIndex] arr[1];arr[1] min;System.out.println(Arrays.toString(arr));//第三趟排序System.out.println(执行的第三趟排序);min arr[2];minIndex 2;for(int j 12;jif(min arr[j]){min arr[j];minIndex j;}}arr[minIndex] arr[2];arr[2] min;System.out.println(Arrays.toString(arr));}上述代码我们得到的最终结果是(2).整体的代码实现public static void main(String[] args) {// TODO Auto-generated method stubint[] arr {101,34,119,1};selectSort(arr);}//选择排序public static void selectSort(int[] arr){//选择排序的算法//通过上面的分步我们可以知道可以通过循环嵌套来实现for(int i0;iint min arr[i];int minIndex i;for(int ji1;jif(minarr[j]){min arr[j];minIndex j;}}arr[minIndex] arr[i];arr[i] min;System.out.println(第(i1)趟排序的结果:);System.out.println(Arrays.toString(arr));}}上述代码我们得到最终的结果是但是还有一点值得注意的是观察我们第二趟的结果我们发现与第一趟的结果是相同的也就是说我们在进行选择排序的过程中可能出现第一个数就是最小的数这样的话我们可以不需要执行交换的代码因此选择排序的算法我们可以做进一步的优化优化代码如下(注释里面有解释)public static void main(String[] args) {// TODO Auto-generated method stubint[] arr {101,34,119,1};selectSort(arr);}//选择排序public static void selectSort(int[] arr){//选择排序的算法//通过上面的分步我们可以知道可以通过循环嵌套来实现for(int i0;iint min arr[i];int minIndex i;for(int ji1;jif(minarr[j]){min arr[j];minIndex j;}}if(minIndex ! i){ //我们通过比较minIndex与i的值来确定是否 最小值发生了改变如果没有改变我们不需要执行下面的代码。arr[minIndex] arr[i];arr[i] min;System.out.println(第(i1)趟排序的结果:);System.out.println(Arrays.toString(arr));}}}最终得到的结果如下
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919653.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!