zoukankan      html  css  js  c++  java
  • “深入理解”—交换排序算法


    基于交换的排序算法有两种:冒泡排序和快速排序


    1、冒泡排序(Bubble Sort)算法描述:比较相邻两个元素的大小,如果反序,则交换。若按升序排序,每趟将数据序列中的最大元素交换到最后位置,就像气泡从水里出来一样。


    举例如下:

    //冒泡排序
    	public static void bubblesort(int[] a)
    	{
    		boolean flag=true;
    		for(int i=0;i<a.length&&flag;i++)
    		{
    		   flag=false;
    		   for(int j=a.length-1;j>i;j--)
    			{
    				if(a[j]<a[j-1])
    				{
    					int temp=a[j];
    					a[j]=a[j-1];
    					a[j-1]=temp;
    					flag=true;
    				}
    		    }
    		}
    	}

    示例中设置了标志,用来进一步优化冒泡排序的性能,具体可参考 

    关于冒泡排序的最简单方法和进一步的优化


    2、快速排序(Quick Sort):是一种分区交换排序算法。采用分治策略对两个子序列再分别进行快速排序,是一种递归算法。

    算法描述:在数据序列中选择一个元素作为基准值,每趟从数据序列的两端开始交替进行,将小于基准值的元素交换到序列前端,将大于基准值的元素交换到序列后端,介于两者之间的位置则成为了基准值的最终位置。同时,序列被划分成两个子序列,再分别对两个子序列进行快速排序,直到子序列的长度为1,则完成排序。

    示例如下:

    //快速排序算法
    		public static void quicksort(int[] a,int left,int right)
    		{
    			int i=left;
    			int j=right;
    			int key=a[i];
    
    			if(i<j)
    			{
    				System.out.println("枢纽元素为:"+key);
    				while(i<j)
    				{
    					while(i<j&&key<=a[j])       //从后边开始找一个比基准值小的元素
    					{
    						j--;
    					}
    //						a[i]=a[j];
    					int temp=a[j];    
    					a[j]=a[i];    
    					a[i]=temp;   
    
    
    					while(i<j&&key>=a[i])      //从前边开始找一个比基准值大的元素
    					{
    						i++;
    					}
    						a[j]=a[i];
    
    						a[i]=key; //将基准值放在适当的位置
    
    						
    				}
    				
    				//进行递归操作,对各个子序列进行快速排序
    				quicksort(a,left,i-1);
    				quicksort(a,i+1,right);
    				
    			}
    		}


    详细的快速排序算法可参考 

    快速排序算法小结














  • 相关阅读:
    UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)
    Codeforces 482E ELCA (LCT)
    Codeforces 798D Mike and distribution (构造)
    AtCoder AGC017C Snuke and Spells
    HDU 6089 Rikka with Terrorist (线段树)
    HDU 6136 Death Podracing (堆)
    AtCoder AGC032D Rotation Sort (DP)
    jenkins+python+kubectl实现批量更新k8s镜像
    Linux 下载最新kubectl版本的命令:
    jenkins X 和k8s CI/CD
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467307.html
Copyright © 2011-2022 走看看