码迷,mamicode.com
首页 > 编程语言 > 详细

【算法设计与分析基础】5、冒泡排序与选择排序

时间:2017-03-13 11:35:26      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:算法设计   void   lis   冒泡   mini   遍历   swa   inpu   序列   

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 = Arrays.asList(89l, 45l, 68l, 90l, 29l, 34l, 17l);
		// List<Long> resultData = selectionSort(data);
		List<Long> resultData = bubbleSort(data);
		for (Long data1 : resultData) {
			System.out.print(data1 + "\t");
		}
	}

}

  

【算法设计与分析基础】5、冒泡排序与选择排序

标签:算法设计   void   lis   冒泡   mini   遍历   swa   inpu   序列   

原文地址:http://www.cnblogs.com/cutter-point/p/6541698.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!