三种方法对java数组排序

原创 2012年03月26日 22:02:04

1.选择排序法

每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列最后,直到全部待排序的数据元素排完。

				for (int i = 0; i < array.length; i++) {
					int min = array[i];
					for (int j = i; j < array.length; j++) {
						if (array[j] < min) {
							min = array[j];
							array[j] = array[i];
							array[i] = min;
						}
					}
				}

2.冒泡排序法

比较相邻的元素值,如果满足条件就交换元素值

				for(int i=1;i<=array.length-1;i++){//排序轮数为数组长度-1
					for(int j=0;j<array.length-i;j++){//比较次数为数组长度-排序轮数
						if(array[j]>array[j+1]){
							int temp=array[j];
							array[j]=array[j+1];
							array[j+1]=temp;
						}
					}
				}

3.快速排序法

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据比另一部分所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程递归进行,以此使整个数据变成有序序列。

package src;

public class QSort 
{

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO 自动生成方法存根
		quicksort qs = new quicksort();
		int data[] = {44,22,2,32,54,22,88,77,99,11};
		qs.data = data;
		qs.sort(0, qs.data.length-1);
		qs.display();
	}

}


class quicksort
{
	public int data[];
	
	private int partition(int sortArray[],int low,int hight)
	{
		int key = sortArray[low];
		
		while(low<hight)
		{
			while(low<hight && sortArray[hight]>=key)
				hight--;
			sortArray[low] = sortArray[hight];
			
			while(low<hight && sortArray[low]<=key)
				low++;
			sortArray[hight] = sortArray[low];
		}
		sortArray[low] = key;
		return low;
	}
	
	public void sort(int low,int hight)
	{
		if(low<hight)
		{
			int result = partition(data,low,hight);
			sort(low,result-1);
			sort(result+1,hight);
		}
		
	}
	
	public void display()
	{
		for(int i=0;i<data.length;i++)
		{
			System.out.print(data[i]);
			System.out.print(" ");
		}
	}
}

来源:http://www.oschina.net/code/snippet_186712_6364 很扎实啊



 

相关文章推荐

PHP中数组的三种排序方法分享

一、冒泡排序法  说明:找到最大的数,排列到最后面,然后继续找  例:  复制代码代码如下: $arr = array(3,5,-1,0,2);  for($i=0;$i fo...

可变数组与不可变数组的三种排序方法

// //  main.m //  paixu // //  Created by 4_5 on 13-8-19. //  Copyright (c) 2013年 南...

二维数组排序的三种方法,只会第一种,回头再看看第二第三种

#include  #define iline 2//行。fun3()中用 #define irow 8//列。fun3()中用   /********************...

对List数组进行排序的三种方法

Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合进行操作的工具类Collections,其中的...

删除排序数组中的重复元素(三种方法的比较)

题目描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。...

数组排序的三种方法

没事可以看看,多掌握几种排序的方法,对程序员的发展一定有用。

剑指Offer面试题33:把数组排成最小的数 Java 实现,三种方法

题目:把数组排成最小的数            输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这3个数字能排成...

12、Java入门—将一数组乱序排列的三种方法 (快速洗牌的小算法)

游戏中遇到这样的问题,需要将一组已知的数据打乱,按照以前和现在的做法,总结了以下方法。 方法一,最笨的菜鸟方法,也是容易想到的(幸好我没想过这种方法 :)) 从已知数组中随机一个数,然后加入到另一个数...

java数组元素倒序的三种方法

将数组元素反转有多种实现方式,这里介绍常见的三种. 直接数组元素对换 @Test public void testReverseSelf() throws Exception { Sy...

快速排序法 java实现 三种方法实现

快速排序法 (1)定义 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。 (...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:三种方法对java数组排序
举报原因:
原因补充:

(最多只允许输入30个字)