zoukankan      html  css  js  c++  java
  • 选择排序

    package sort;
    /*
     * 选择排序,不稳定的排序方法(2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序不相同)
     * 
     * 规律:遍历整个数组,找出最大或最小元素和数组头或数组尾交换
     * 
     * 注意:内层循环不要-1,和尾部交换时尾部下表为len-i-1
     */
    import java.util.Arrays;
    
    public class Choose {
    	public static void main(String[] args) {
    		int[] sz = { 3, 5, 7, 5, 4, 3, 554, 43, 232, 67, 3, 212, 3, 546, 0 };
    		System.out.println("原数组:" + Arrays.toString(sz));
    		method1(sz);//从数组尾部开始
    		method2(sz);//从数组头部开始
    	}
    
    	private static void method2(int[] sz) {
    		//重置
    		int min = 0;
    		
    		//外层循环控制需要排序的趟数
    		for (int i = 0; i < sz.length - 1; i++) {
    			min = i;
    		    //内层循环控制遍历数组的个数并得到最大/最小
    			for (int j = i; j < sz.length; j++) {
    				if (sz[j] < sz[min]) {
    					min = j;
    				}
    			}
    			// 交换
    			int temp = sz[i];// 当前定位的数组元素
    			sz[i] = sz[min];
    			sz[min] = temp;
    		}
    		System.out.println("method1排序数组:" + Arrays.toString(sz));
    	}
    
    	private static void method1(int[] sz) {
    		int max = 0;
    		for (int i = 0; i < sz.length - 1; i++) {
    			max = 0;// 重置
    			for (int j = 0; j < sz.length - i; j++) {
    				if(sz[j]>sz[max]){
    					max=j;
    				}
    			}
    			//交换
    			int temp = sz[sz.length-i-1];//这里当前元素是最后一个,要-1否则溢出
    			sz[sz.length-i-1] = sz[max];
    			sz[max] = temp;
    		}
    		System.out.println("method2排序数组:" + Arrays.toString(sz));
    	}
    
    }
    
    
  • 相关阅读:
    【转】Ubuntu 20.04修改ip地址
    试用 Portable Allegro Serve
    看完了 Source Code
    Common Lisp 参数传递的几种形式
    Irony 一个 .NET 语言实现工具包
    PPT 技巧学习
    LISP 练习:quick sort
    关于 Business Rule Engine
    转换 PDF 格式为适合电纸书阅读的版本
    IIS 7 SMTP configuration
  • 原文地址:https://www.cnblogs.com/xiongyungang/p/10468536.html
Copyright © 2011-2022 走看看