• 【算法设计与分析基础】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 + "	");
    		}
    	}
    
    }
    

      

  • 相关阅读:
    Dynamics CRM开发参考资料
    Sql Server存储过程和游标的配合操作
    C#字符处理的性能问题
    Windows安装完ADFS后卸载ADFS清除ADFS数据库
    C#修改AD账号及密码
    Dynamics CRM安装教程九(续):自建证书的CRM项目客户端设置CRM访问
    Kubernetes实践之深入掌握Pod——Pod健康检查和服务可用性检查
    Kuberbetes实践——镜像拉取策略、command args参数、Pod生命周期和重启策略
    Kubernetes实践之深入掌握Pod——在容器内获取Pod信息
    Kubernetes实践之深入掌握Pod——ConfigMap
  • 原文地址:https://www.cnblogs.com/cutter-point/p/6541698.html
Copyright © 2020-2023  润新知