本文共 1225 字,大约阅读时间需要 4 分钟。
n个记录的文件的可经过n-1趟直接得到有序结果:
①初始状态:无序区为R[1..n],有序区为空。
②第1趟排序
在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
……
③第i趟排序
第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。
常见的选择排序细分为、树形选择排序(排序)、。上述算法仅是的步骤。
package com.mylearn.algorithm.sort; import org.apache.commons.lang.xwork.StringUtils; /** * Created by IntelliJ IDEA. * User: yingkuohao * Date: 13-9-9 * Time: 上午11:36 * CopyRight:360buy * Descrption: 选择排序:循环一次,选择出一个最小的,时间负责度 n*n * To change this template use File | Settings | File Templates. */ public class SelectSort { public static void main(String args[]) { Integer[] integers = new Integer[]{12, 15, 9, 24, 6, 31}; SelectSort selectSort = new SelectSort(); System.out.println("初始:" + StringUtils.join(integers, ",")); selectSort.execute(integers); System.out.println("结果:" + StringUtils.join(integers, ",")); } public void execute(Integer[] integers) { int tmp; for (int i = 0; i < integers.length - 1; i++) { for (int j = i + 1; j < integers.length; j++) { tmp = integers[i]; //tmp总是保持最小值 if (integers[j].intValue() < tmp) { //交换 integers[i] = integers[j]; integers[j] = tmp; } } } } } |
转载地址:http://uzrrb.baihongyu.com/