`
sailinglxg
  • 浏览: 92284 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java常用的排序

    博客分类:
  • java
阅读更多
冒泡排序
package test;

/**
 * @descript BubbleSortDemo.java
 * @author sinclair
 * @date Jun 11, 2010
 */
class BubbleSort {
    private int[] temp;

    public BubbleSort( int[] src ) {
	temp = src;
    }

    /**
     * 输出显示
     */
    public void display() {
	for ( int i = 0; i < temp.length; i++ ) {
	    System.out.print( temp[i] + "," );
	}
    }

    /**
     * 排序
     */
    public void sort() {
	for ( int i = temp.length - 1; i > 1; i-- ) {
	    for ( int j = 0; j < i; j++ ) {
		if (temp[j] > temp[j + 1]) {
		    swap( j, j + 1 );
		}
	    }
	}
    }

    /**
     * 交换
     * 
     * @param a
     * @param b
     */
    public void swap( int a, int b ) {
	int c = temp[a];
	temp[a] = temp[b];
	temp[b] = c;
    }
}

public class BubbleSortDemo {
    public static void main( String[] args ) {
	int[] a = new int[] { 2, 5, 3, 6, 1, 7, 9, 6 };
	BubbleSort bubble = new BubbleSort( a );
	bubble.sort();
	bubble.display();
    }
}



选择排序
package test;

class SelectSort {
    private int[] temp;

    public SelectSort( int[] src ) {
	this.temp = src;
    }

    /**
     * 排序
     */
    public void sort() {
	int in, out, min;
	for ( out = 0; out < temp.length - 1; out++ ) {
	    min = out;
	    for ( in = out + 1; in < temp.length; in++ ) {
		if (temp[in] < temp[min]) {
		    min = in;
		    swap( out, min );
		}

	    }
	}
    }

    /**
     * 交换
     * 
     * @param a
     * @param b
     */
    public void swap( int a, int b ) {
	int c = temp[a];
	temp[a] = temp[b];
	temp[b] = c;
    }

    /**
     * 输出显示
     */
    public void display() {
	for ( int i = 0; i < temp.length; i++ ) {
	    System.out.print( temp[i] + "," );
	}
    }
}

public class SelectSortDemo {
    /**
     * @param args
     */
    public static void main( String[] args ) {
	int[] a = new int[] { 2, 5, 3, 6, 1, 7, 9, 6 };
	SelectSort bubble = new SelectSort( a );
	bubble.sort();
	bubble.display();
    }

}



快速排序
/**
 * 
 */
package test;

/**
 * @descript QuickSortDemo.java
 * @author sinclair
 * @date May 13, 2010
 */
public class QuickSortDemo {
    /**
     * 排序
     * 
     * @param pData
     * @param left
     * @param right
     */
    public static void QuickSort( int[] pData, int left, int right ) {
	int i, j;
	i = left;
	j = right;
	while ( true ) {
	    while ( ( ++i ) < right - 1 && pData[i] < pData[left] )
		;
	    while ( ( --j ) > left && pData[j] > pData[left] )
		;
	    if (i >= j)
		break;
	    swap( pData, i, j );
	}
	swap( pData, left, j );
	if (left < j)
	    QuickSort( pData, left, j );
	if (right > i)
	    QuickSort( pData, i, right );
    }

    /**
     * 交换
     * 
     * @param temp
     * @param a
     * @param b
     */
    public static void swap( int temp[], int a, int b ) {
	int c = temp[a];
	temp[a] = temp[b];
	temp[b] = c;
    }

    public static void main( String[] args ) {
	int[] pData = new int[30];
	for ( int i = 0; i < pData.length; i++ )
	    pData[i] = ( int ) ( Math.random() * 100 );
	for ( int i = 0; i < pData.length; i++ )
	    System.out.print( pData[i] + " " );
	QuickSortDemo.QuickSort( pData, 0, pData.length );
	System.out.println( "\n快速排序处理..." );
	for ( int i = 0; i < pData.length; i++ )
	    System.out.print( pData[i] + " " );
    }
}

分享到:
评论

相关推荐

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找

    本资料包聚焦于"Java常用排序算法"和"程序员必须掌握的8大排序算法",并深入探讨了"二分法查找"这一高效搜索技术。 首先,我们来看八大排序算法。这些算法包括: 1. **冒泡排序**:最简单的排序方法,通过不断交换...

    Java常用排序算法

    以下是关于"Java常用排序算法"的详细解释: 1. 插入排序(Insertion Sort) 插入排序是一种简单直观的排序算法,它的工作原理类似于我们日常生活中整理扑克牌的过程。算法分为两个阶段:遍历待排序的数组,将每个...

    详解Java常用排序算法-选择排序

    详解Java常用排序算法-选择排序 选择排序(Selection Sort)是一种简单的排序算法,它的基本思想是每次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。 选择...

    详解Java常用排序算法-归并排序

    Java常用排序算法-归并排序 归并排序是一种分治思想的排序算法,其基本思想是将待排序的数组分成若干个子序列,每个子序列都是有序的,然后再将子序列合并成一个有序的数组。这种算法的时间复杂度为O(n log n),...

    Java常用排序算法程序员必须掌握的8大排序算法Java开

    本文将深入探讨Java中的八大常用排序算法,这些算法对于提升程序效率、优化数据处理具有重要意义。这8大排序算法包括:冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序以及桶排序。 1. **冒泡...

    Java常用排序算法程序员必须掌握的8大排序算法

    冒泡排序--Java常用排序算法程序员必须掌握的8大排序算法

    Java常用排序算法源码

    以下是对Java中几种常见排序算法的详细解析: 1. 冒泡排序: 冒泡排序是一种简单直观的排序算法,通过不断交换相邻的不正确顺序元素来达到排序的目的。它的时间复杂度为O(n^2),在处理大量数据时效率较低。尽管效率...

    java 常用排序算法

    总结来说,Java中常用的排序算法如Shell排序和快速排序各有特点,Shell排序适用于处理大型数据,而快速排序通常在平均情况下具有较高的效率。在实际应用中,根据数据特性选择合适的排序算法至关重要,以实现最佳性能...

    Java常用排序算法&程序员必须掌握的8大排序算法+二分法查找(同步到博客).doc

    【Java 常用排序算法】排序是编程中常见的任务之一,主要分为四类:插入排序、交换排序、选择排序和归并排序。此外,还有分配排序中的基数排序。以下是对这些排序算法的详细说明: 1. **直接插入排序**: 直接插入...

    详解Java常用排序算法-桶排序

    在 Java 中,桶排序可以使用以下步骤来实现: 1. 首先,找到输入数组中的最小值和最大值,以确定桶的个数。 2. 然后,创建一个大小为桶的个数的桶列表,用于存储待排序的元素。 3. 接下来,将输入数组中的元素分配...

    详解Java常用排序算法-基数排序

    在 Java 中,基数排序可以通过以下步骤来实现: 1. 首先,找到输入数组中的最大值,并计算最大值的位数。 2. 创建一个大小为 10 的桶列表,用于存储每个桶中的元素。 3. 依次遍历输入数组,将每个元素按照其个位、...

    详解Java常用排序算法-插入排序

    在 Java 中,插入排序算法可以通过以下代码实现: ```java public class Insertion { public static void insertionSort(int[] arr) { int n = arr.length; for (int i = 1; i ; i++) { int key = arr[i]; int ...

    Java常用排序 经典算法

    - 实例:在Java中,通过两个嵌套循环实现,外层循环控制未排序部分,内层循环用于将当前元素与已排序部分的元素进行比较并移动,直到找到合适的位置插入。 - 代码实现(部分): ```java for (int i = 1; i ; i+...

    详解Java常用排序算法-希尔排序

    在 Java 中,希尔排序可以使用以下代码实现: ```java public class Shell { public static void shellSort(int[] arr) { int n = arr.length; for (int gap = n / 2; gap &gt; 0; gap /= 2) { for (int i = gap; ...

    详解Java常用排序算法-快速排序

    在 Java 中,快速排序算法可以使用递归函数来实现。例如,下面的代码就是一个使用快速排序算法对整数数组进行排序的示例: ```java public class Quick { public static void quickSort(int[] arr, int low, int ...

    详解Java常用排序算法-冒泡排序

    Java排序算法之冒泡排序详解 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置。这个过程持续对数列的末尾进行,直到整个数列都排序完成...

    常用排序算法java演示

    本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...

Global site tag (gtag.js) - Google Analytics