数据结构----快速排序
原理:参考趣学数据结构
代码:
# include <stdio.h>
# include <stdlib.h>
int quickSort ( int a[ ] , int l, int h) { int i = l, j = h, p = a[ l] ; while ( i < j) { while ( i< j&& a[ j] > p) { j-- ; } if ( i < j) { a[ i++ ] = a[ j] ; } while ( i < j&& a[ i] <= p) { i++ ; } if ( i < j) { a[ j-- ] = a[ i] ; } } a[ i] = p; return i;
}
void fenZhi ( int a[ ] , int l, int h) { if ( l < h) { int mid = quickSort ( a, l, h) ; fenZhi ( a, l, mid - 1 ) ; fenZhi ( a, mid + 1 , h) ; }
}
void print7 ( int a[ ] , int length) { for ( int i = 0 ; i < length; i++ ) { printf ( "%d " , a[ i] ) ; } printf ( "\n" ) ;
}
int main ( ) { int a[ ] = { 1 , 4 , 6 , 7 , 4 , 3 , 2 , 11 , 5 , 7 , 8 , 9 , 6 , 55 } ; int length = sizeof ( a) / sizeof ( a[ 0 ] ) ; printf ( "排序前\n" ) ; print7 ( a, length) ; fenZhi ( a, 0 , length - 1 ) ; printf ( "排序后\n" ) ; print7 ( a, length) ; system ( "pause" ) ; return 0 ;
}
测试截图:
时间复杂度O(nlogn),空间复杂度O(1)
如果存在什么问题欢迎批评指正!谢谢!