public class QuickSort1 { void QuickSort(String[] pData, int left, int right) { int i, j; // int iTemp; String middle, strTemp; i = left; j = right; middle = pData[(left + right) / 2]; do { while ((pData.compareTo(middle) 0) && (j > left)){ j--; } if (i // iTemp = pDataNum; // pDataNum = pDataNum[j]; // pDataNum[j] = iTemp; i++; j--; } } while...
by kumwolf - Java文档中心 - 2008-11-09 12:05:17 阅读(1040) 回复(0)
def qsort(list)
return [] if list.size ==0
x,*xs = list
small,big = xs.partition { |item| item
假设知道最大值和最小值范围。 首先取center = (max + min) / 2 然后 > center的放入一边, < center 的放入一边。 统计两边的个数,然后修改max和min,重新做。 像你说的,如果固定的100万,可以把center 设置为靠近100万的值。
这是算法引论中介绍的快速排序算法: [code]QUICKSORT(A,p,r) 1 if p < r 2 then q <-- PARTITION(A,p,r) 3 QUICKSORT(A,p,q) 4 QUICKSORT(A,q + 1,r) PARTITION(A,p,r) 1 x <--- A[p] 2 i <--- p - 1 3 j <--- r + 1 4 while TRUE 5 do repeat j <--- j - 1 6 until A[j] <= x 7 repeat i <--- i + 1 8 until A >= x 9 if i < j 10 ...
[code]
#include "istream.h"
#include "ostream.h"
void qsort(int[],int,int);
void main()
{
int a[]={6,2,4,5,1,3};
int len=sizeof(a)/sizeof(int);
qsort(a,0,len-1);
for(int i=0;i
#include
:em03: :em03: 前阵子在上课时,自己写出了一个自认很不错的排序算法, 写的这个排序算法原理来自 QuickSort 快速排序 下面就是我自己写出来的 QuickSort 快速排序 注:我是用 C++ 写的 第二个参数 beg 是较低的下标 , 第三个参数 end 是较高的下标 把第一个元素定为基点,变量 m 相当于指示中点的位置, 比较完后就会把 基点和中点 互相转换 除基点外,比基点小的都会被提到 第m位,每次都会把 m加1 最后,...
写了个快速排序的脚本练练手,顺便熟悉一下awk中的递归函数的写法。 特点:能对字符串及数字进行排序: qsort: [code] #! /usr/bin/awk BEGIN { FS="[ ]"; } { arr[len++]=$0; } END{ qsort(arr,0,len); printfile(arr,len+1); exit 0; } function qsort(array , p , r , t , i ,x) { if (p < r) { x=array[p]; i = p; j = r+1; while(array[--j] > x ); ...
// test0.cpp : 定义控制台应用程序的入口点。
//此教程来源于ChinaUnix論壇(http://bbs.chinaunix.net/)
//查看完整的教程请点:http://bbs.chinaunix.net/thread-1296108-1-1.html
#include "stdafx.h"
#include
我找了半天找不到错误,但是就是运行不了,
后来找到答案了,就是缺少了递归结束条件。
if(left