首页 > 代码库 > 【算法设计与分析基础】5、冒泡排序与选择排序
【算法设计与分析基础】5、冒泡排序与选择排序
package cn.xf.algorithm.ch03; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 数据排序 * * @author xiaof * */ public class Sort { /** * 对给定的数组进行排序 选择排序法 每次选择在当前序列之后的最小值,和当前序列数据进行对换 * * @param inputData * @return */ public static List<Long> selectionSort(List inputData) { // 遍历数据,设定一个最小值 int n = inputData.size(); // 队列长度 int minIndex = 0; Long min = 0l; // 最后一个数据不用排列 for (int i = 0; i < n - 1; ++i) { // 初始化最小数据的索引位置 minIndex = i; min = (Long) inputData.get(minIndex); // 遍历后面数据,比较最小值 for (int j = i + 1; j < n; ++j) { // 判断大小 Long tempJ = (Long) inputData.get(j); if (tempJ < min) { min = tempJ; // minIndex = j; // 交换数据 Sort.swap(inputData, minIndex, j); } } } // 排序结束之后返回数据 return inputData; } /** * 交换数组中的i和j的数据 * * @param resourceData * @param i * @param j */ public static void swap(List resourceData, int i, int j) { Object tempO = resourceData.get(i); resourceData.set(i, resourceData.get(j)); resourceData.set(j, tempO); } /** * 冒泡排序 * * @param inputData * @return */ public static List<Long> bubbleSort(List inputData) { // 冒泡排序,就是用当前的元素和后面数据进行比较,一层一层冒泡排序 int n = inputData.size(); for (int i = 0; i < n; ++i) { // 遍历第二层,进行交换比较,一轮循环,都是选出最后一个元素 // 然后下一次循环比较的数据就会比原来少1,也就是循环n-i-1次循环 for (int j = 0; j < n - i - 1; ++j) { Long tempJ = (Long) inputData.get(j); // 获取要比较的下一个数据 Long tempJ1 = (Long) inputData.get(j + 1); // 从小到大排序,当前比后面大,就交换数据 if (tempJ > tempJ1) { Sort.swap(inputData, j, j + 1); } } } return inputData; } public static void main(String[] args) { List<Long> data = http://www.mamicode.com/Arrays.asList(89l, 45l, 68l, 90l, 29l, 34l, 17l);"\t"); } } }
【算法设计与分析基础】5、冒泡排序与选择排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。