54 lines
915 B
Text
54 lines
915 B
Text
|
|
|
||
|
|
void quick_sort( int[] a, int l, int r)
|
||
|
|
{
|
||
|
|
var j=0;
|
||
|
|
|
||
|
|
if( l < r )
|
||
|
|
{
|
||
|
|
/* divide and conquer */
|
||
|
|
j = partition( a, l, r);
|
||
|
|
quick_sort( a, l, j-1);
|
||
|
|
quick_sort( a, j+1, r);
|
||
|
|
}
|
||
|
|
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
int partition( int[] a, int l, int r) {
|
||
|
|
var pivot=a[l];
|
||
|
|
var i =l;
|
||
|
|
var j = r+1;
|
||
|
|
var t=0;
|
||
|
|
var done = 0;
|
||
|
|
|
||
|
|
while(done==0)
|
||
|
|
{
|
||
|
|
i = i + 1;
|
||
|
|
while( a[i] <= pivot & i <= r ) {
|
||
|
|
i = i + 1;
|
||
|
|
}
|
||
|
|
j = j - 1;
|
||
|
|
while( a[j] > pivot ) {
|
||
|
|
j = j - 1;
|
||
|
|
}
|
||
|
|
if( i >= j ) { done=1; }
|
||
|
|
if (done==0) {
|
||
|
|
t = a[i]; a[i] = a[j]; a[j] = t;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
t = a[l]; a[l] = a[j]; a[j] = t;
|
||
|
|
return j;
|
||
|
|
}
|
||
|
|
|
||
|
|
int program (int argc, string[] argv) {
|
||
|
|
|
||
|
|
var a = new int[]{ 107, 112, 121, 102, 123, 115, 104, 111, 109};
|
||
|
|
|
||
|
|
print_string (string_of_array (a));
|
||
|
|
quick_sort( a, 0, 8);
|
||
|
|
print_string (string_of_array (a));
|
||
|
|
|
||
|
|
return 255;
|
||
|
|
}
|
||
|
|
|