选择排序及选择排序的优化
Posted summerdata
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序及选择排序的优化相关的知识,希望对你有一定的参考价值。
package com.Summer_0421.cn; import java.util.Arrays; /** * @author Summer * 选择排序 * 通过记录下标值,优化选择排序 */ public class Test06 { public static void main(String[] args) { int[] array = {18, 34, 79, 62, 59, 15, 39, 75, 62, 10}; System.out.println(Arrays.toString(array)); sort(array);//选择排序 System.out.println(Arrays.toString(array)); int[] array1 = {18, 34, 79, 62, 59, 15, 39, 75, 62, 10}; sort1(array1);//选择排序优化 System.out.println(Arrays.toString(array)); } private static void sort1(int[] a) { int count = 0;//外循环次数 int count1 = 0;//内循环次数 int count2 = 0;//内循环次数 int index = 0; //记录下标 int temp; //中间量,第三变量的交换 for (int i = 0; i < a.length-1; i++) { count++; index = i;//将下标值记录下来 for (int j = i+1; j < a.length; j++) { count1++; if (a[index]>a[j]) { //记录当前小的下标 index = j; } } if (index!=i) {//如果最小值的索引与最小值相对应,则不用再次交换 count2++; temp = a[i]; a[i] = a[index]; a[index] = temp; } } System.out.println("外循环次数"+count); System.out.println("内循环次数"+count1); System.out.println("交换次数"+count2); } private static void sort(int [] a) { int count = 0;//外循环次数 int count1 = 0;//内循环次数 int count2 = 0; //交换次数 for (int i = 0; i < a.length-1; i++) {//代表数组中数值位数的下标值,最后一个数字不用比较,所以-1,外循环执行一次,内循环执行一轮 count++; for (int j = i+1; j < a.length; j++) {//第一次循环时,内循环遍历除第一个数以外的全部数字,以此类推,每次都减少一个数字,并且执行一轮 count1++; //第三变量交换 int temp; if (a[j]<a[i] ) { count2++; temp = a[j]; a[j] = a[i]; a[i] = temp; } } } System.out.println("外循环次数"+count); System.out.println("内循环次数"+count1); System.out.println("交换次数"+count2); } }
以上是关于选择排序及选择排序的优化的主要内容,如果未能解决你的问题,请参考以下文章