zoukankan      html  css  js  c++  java
  • JAVA中运用数组的四种排序方法

    JAVA中在运用数组进行排序功能时,一般有四种方法:快速排序法、冒泡法、选择排序法、插入排序法。

        快速排序法主要是运用了Arrays中的一个方法Arrays.sort()实现。

        冒泡法是运用遍历数组进行比较,通过不断的比较将最小值或者最大值一个一个的遍历出来。

        选择排序法是将数组的第一个数据作为最大或者最小的值,然后通过比较循环,输出有序的数组。

        插入排序是选择一个数组中的数据,通过不断的插入比较最后进行排序。

    <1>利用Arrays带有的排序方法快速排序 Arrays.sort(a1);

    import java.util.Arrays;
    
    public class Test002 {
    	public static void main(String[] args) {
    		int[] a1 = {9,8,7,6,5,4,3,2,1};
    		Arrays.sort(a1);  //快速排序,从小到大排序
    		System.out.println("快速排序a1 :  ");
    		for(int i: a1){
            	<span style="white-space:pre">	</span>System.out.print(i+"  ");
    		}
    	}
    }


    <2>冒泡排序算法

    冒泡排序算法的运作如下:
    1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
    2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
    3. 针对所有的元素重复以上的步骤,除了最后一个。
    4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。



    public static int[] bubbleSort(int[] args){	//冒泡排序算法,从小到大
    	for(int i=0;i<args.length-1;i++){
    		for(int j=i+1;j<args.length;j++){
    			if (args[i]>args[j]){	//相邻元素进行比较,若args[i]>args[j],则交换二者的值
    				int temp=args[i];
    				args[i]=args[j];
    				args[j]=temp;
    			}
    		}
    	}
    	return args;
    }


    <3>选择排序算法
    每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。例如,第一趟排序从所有序列中找到最小的元素,放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推。


    public static int[] selectSort(int[] args){//选择排序算法
    	if((args==null)||(args.length==0)) 
    		return null;
    	for (int i=0;i<args.length-1 ;i++ ){
    		int minIndex=i;	//无序区的最小数据数组下标
    		for (int j=i+1;j<args.length ;j++ ){
    			if (args[minIndex]>args[j]){	//在无序区中找到最小数据并保存其数组下标 
    				minIndex=j;
    			}
    		}
    		if (minIndex!=i){	//如果不是无序区的最小值位置不是默认的第一个数据,则交换之。
    			int temp=args[i];
    			args[i]=args[minIndex];
    			args[minIndex]=temp;        
    		}
    	}
    	return args;
    }

    <4>插入排序算法

    插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。



    public static int[] insertSort(int[] args) {//插入排序算法
    	for(int i=1;i<args.length;i++){
    		for(int j=i;j>0;j--){	
    			if (args[j]<args[j-1]){
    				int temp=args[j-1];
    				args[j-1]=args[j];	//将比args[j]大的数据向后移 
    				args[j]=temp;
    			}else break;
    		}
    	}
    	return args;
    }




  • 相关阅读:
    Mysql中表名作为参数的问题
    Mysql中时间的操作笔记
    关于ThreadAbortExcption异常处理
    数据库中判断为空后使用默认值的函数
    网页嵌入地图的方式
    常用网络CMD命令
    前端html和css
    C#查看文件目录操作、复制、替换
    网站日志统计查询工具
    SQL查看表数据占用空间代码
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171584.html
Copyright © 2011-2022 走看看