选择排序原理(java实现)(错,不是真正的选择排序,正确的已发出)

xiaoxiao2021-02-28  15

排序是数组中经常用到的功能,这里主要讲选择排序   选择排序,就是依次固定每个下标,让每个固定下标的数和后面所有数据进行比较,假定现在有一个整型数组{23,4,56,166,2},对它进行从小到大选择排序   先固定下标0,也就是第一个数23,与下标为1,第二个数4进行比较,发现第二个数4比第一个数23小,那么就将23和4进行交换,变为{4,23,56,166,2},接下来还是下标0和下标2进行比较,56比4要大,不进行交换,之后,下标0和下标3进行比较,166比4大,不进行交换,最后,下标0和下标5进行比较,2比4小,进行交换,数组变为{2,23,56,166,4}   可以发现,经过这一轮比较,下标0已经是这五个数中最小的数了,接下来还是利用这个原理,固定下标1,与后面的所有的数据进行比较,如果后面的数,小于下标1中的数,那么就交换,大于就继续往下走,需要注意的是,固定的是下标,不是数,也就是说,交换之后,也是用下标1中的数进行比较,经过这一轮比较,数组中第二小的位置就被放到下标1的位置了,即{2,4,56,166,23}   接下来按照这个原理,对剩下的三个数进行比较,就可以实现从小到大排序,这就是选择排序,下面是java代码实现

class Demo { public static void main(String[] args) { //定义要比较的数组 int[] arr = {23,4,56,166,2}; //调用选择排序函数 selectSort(arr); //打印数组,用逗号间隔 for(int i=0;i<arr.length;i++) { if(i!=arr.length-1) System.out.print(arr[i]+","); else System.out.print(arr[i]); } } //选择排序 //结果:无结果 //参数:整型数组 public static void selectSort(int[] arr) { //外层循环控制总共比较的轮数,5个数总共比较4轮(最后一个数不用比较) for(int i=0;i<arr.length-1;i++) { //从下标i+1开始,直到最后一个数,与第一个数进行比较 for(int j=i+1;j<arr.length;j++) { //小于则交换,大于则继续循环 if(arr[j]<arr[i]) { //交换 exchange(arr,j,i); } } } } //交换整型数组中的两个下标中的数 public static void exchange(int[] arr,int i,int j) { int c; c = arr[i]; arr[i] = arr[j]; arr[j] = c; } }
转载请注明原文地址: https://www.6miu.com/read-250005.html

最新回复(0)