快速排序算法(C & Java 实现)

来源:互联网 发布:淘宝的子账号是什么 编辑:程序博客网 时间:2024/05/16 05:55

C语言版 

#include <stdio.h>void disp_array( int a[], int n ){    int i;    for( i = 0; i < n; ++i )        printf( "%d ", a[i] );    printf( "\n" );}int partition( int a[], int low, int high ){    int piv_val = a[low];    while( low < high )    {        while( low < high && a[high] >= piv_val ) --high;        a[low] = a[high];        while( low < high && a[low] <= piv_val ) ++low;        a[high] = a[low];    }    a[low] = piv_val;    return low;}void qsort_recur( int a[], int low, int high ){    int idx_piv;    if( low < high )    {        idx_piv = partition( a, low, high );        qsort_recur( a, low, idx_piv - 1 );        qsort_recur( a, idx_piv + 1, high );    }}void quick_sort( int a[], int n ){    qsort_recur( a, 0, n - 1 );}int main(){    int a[] = { 49, 38, 65, 97, 76, 13, 27, 49 };    int n = 8;        printf( "Before sorting: " );    disp_array( a, n );    quick_sort( a, n );    printf( "After sorting: " );    disp_array( a, n );    return 0;}

Java语言版

public class TestSort {public static void dispArray( int a[] ) {for( int i = 0; i < a.length; ++i )System.out.print( a[i] + " " );System.out.println();}/* * quick sort */private static int partition( int [] a, int low, int high ) {int pivKey = a[low];while( low < high ) {while( low < high && a[high] >= pivKey ) --high;a[low] = a[high];while( low < high && a[low] <= pivKey ) ++low;a[high] = a[low];}a[low] = pivKey;return low;}private static void qsort( int [] a, int low, int high ) {int pivKeyPos;if( low < high ) {pivKeyPos = partition( a, low, high );qsort( a, low, pivKeyPos - 1 );qsort( a, pivKeyPos + 1, high );}}public static void quickSort( int [] a ) {qsort( a, 0, a.length - 1 );}public static void main( String[] args ) {int a[] = { 100, 49, 38, 65, 97, 76, 13, 27, 49 };System.out.print( "Before sorting: " );dispArray( a );quickSort( a );System.out.print( "Quick sorting: " );dispArray( a );System.out.println();}}
原创粉丝点击