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

Posted cutter_point

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法设计与分析基础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 = 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冒泡排序与选择排序的主要内容,如果未能解决你的问题,请参考以下文章

算法设计与分析 实验一 排序算法性能分析

Java排序算法分析与实现:快排冒泡排序选择排序插入排序归并排序

排序算法_冒泡排序(算法设计与C代码实现)

java常见排序算法--选择排序冒泡排序插入排序分析与比较

数据结构与算法 排序算法 附有详细动画流程分析图

基础算法-冒泡排序,插入排序,选择排序