• 面试中常常问的三种简单排序方法


    /**
     * 三种简单的排序
     * 本类中全部举例都是依照从小到大进行排序
     * @author caohaicheng
     * @time   2014-07-24
     */
    public class SortDemo {
    	//int[] score={7,10,35,21,78,2,1,9};
    	public static void main(String[] args) {
    		SortDemo sd=new SortDemo();
    		System.out.println("*********************************冒泡排序**********************************");
    		//冒泡排序
    		sd.BubbleSort();
    		
    		System.out.println("*********************************选择排序**********************************");
    		//选择排序
    		sd.selectSort();
    		
    		System.out.println("*********************************插入排序**********************************");
    		//插入排序
    		sd.insertSort();
    	}
    	
    	/**
    	 * 冒泡排序:循环进行相邻的两个数比較,然后依据规则决定是否调换位置
    	 */
    	private  void BubbleSort() {
    		int[] score={7,10,35,21,78,2,1,9};	
    		for(int i=1;i<score.length;i++){	//最多比較N-1次,每比較一轮就将所參与比較的数的最大值蠕动到这些数的最后面
    			/*
    			 * 第二次循环的j非常关键,由于当第一轮比較结束,数组中的最大的那个值已经被放到最后一位了
    			 * 第二轮的时候就不须要最后一个数字參与比較了,比較结束倒数第二大的数放在倒数第二的位置了
    			 * 依次类推 ,最多比較N-1次就能够全部排序好。
    			 */
    			for(int j=0;j<score.length-i;j++){
    				if(score[j]>score[j+1]){
    					//两个元素互换位置
    					int temp=score[j];
    					score[j]=score[j+1];
    					score[j+1]=temp;
    				}
    			}
    			System.out.print("冒泡排序第"+i+"次排序结果:");
    			for(int k=0;k<score.length;k++){
    				System.out.print(score[k]+"	");
    			}
    			System.out.println();
    		}
    		System.out.print("冒泡排序终于排序的结果:");
    		for(int i=0;i<score.length;i++){
    			System.out.print(score[i]+"	");
    		}
    		System.out.println();
    	}
    	
    	/**
    	 * 选择排序:顺序依次取出一个数与它后面的全部数进行比較,找出最小的然后交换位置
    	 * 冒泡排序是跟相邻的两两比較,发现比他小就交换位置; 而选择排序是跟全部的都比較之后,确定了哪个最小,再交换位置
    	 * 
    	 */
    	private void selectSort(){
    		int[] score={7,10,35,21,78,2,1,9};
    		for(int i=0;i<score.length-1;i++){//没循环依次就找到了一个最小值,最多循环N-1次
    			int minIndex=i;
    			for(int j=i+1;j<score.length;j++){//跟后面的全部数进行比較,找出那个最小的
    				if(score[minIndex]>score[j]){
    					minIndex=j;//找到最小值的下标了
    				}
    			}
    			
    			//交换位置
    			int temp=score[minIndex];
    			score[minIndex]=score[i];
    			score[i]=temp;
    			
    			System.out.print("选择排序第"+i+"次排序结果:");
    			for(int k=0;k<score.length;k++){
    				System.out.print(score[k]+"	");
    			}
    			System.out.println();
    			
    		}
    		System.out.print("选择排序终于排序的结果:");
    		for(int i=0;i<score.length;i++){
    			System.out.print(score[i]+"	");
    		}
    		System.out.println();
    	}
    	
    	/**
    	 * 插入排序:跟玩扑克牌的时候抓牌"码牌"相似,我们抓第一张牌不用排序,第二张牌要与第一张牌进行比較,假设小于第一张牌,那么就
    	 * 将第一张牌移动到第2的位置上
    	 * 以后依次抓牌,与手牌从前往后依次比較,当发现小于某张手牌的时候就将抓到的牌放在该位置,该位置后的牌依次后移。
    	 * 
    	 */
    	private void insertSort(){
    		int[] score={7,10,35,21,78,2,1,9};
    		for(int i=1;i<score.length;i++){
    			int temp=score[i];
    			int j=i-1;
    			while(j>=0 && score[j]>temp ){
    				score[j+1]=score[j];
    				j--;
    			}
    			score[j+1]=temp;
    		}
    		System.out.print("插入排序终于排序的结果:");
    		for(int i=0;i<score.length;i++){
    			System.out.print(score[i]+"	");
    		}
    		System.out.println();
    	}  
    	
    }
    

  • 相关阅读:
    python 执行sql得到字典格式数据
    python爬虫 url链接编码成gbk2312格式
    windows环境下elasticsearch安装教程(单节点)
    python SQLServer 存储图片
    爬虫的本质是和分布式爬虫的关系
    requests form data 请求 爬虫
    mysql 删除 binlog 日志文件
    查看mysql数据表的大小
    xshell 连接报错 Disconnected from remote host
    centos 7.3 安装 mysqldb 报错 EnvironmentError: mysql_config not found ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4353727.html
Copyright © 2020-2023  润新知