C语言实现快速排序
快速排序算法
1.划分操作
int Partition ( int arr[ ] , int low, int high) {
int point = arr[ low] ;
while ( low < high) {
while ( low < high && arr[ high] >= point)
high-- ;
arr[ low] = arr[ high] ;
while ( low < high && arr[ low] <= point)
low++ ;
arr[ high] = arr[ low] ;
}
arr[ low] = point;
return low;
}
2.快速排序算法实现
void QuickSort ( int arr[ ] , int low, int high) {
int point;
if ( low < high) {
point = Partition ( arr, low, high) ;
QuickSort ( arr, low, point - 1 ) ;
QuickSort ( arr, point + 1 , high) ;
}
}
项目完整代码
#include <stdio.h>
int Partition ( int arr[ ] , int low, int high) {
int point = arr[ low] ;
while ( low < high) {
while ( low < high && arr[ high] >= point)
high-- ;
arr[ low] = arr[ high] ;
while ( low < high && arr[ low] <= point)
low++ ;
arr[ high] = arr[ low] ;
}
arr[ low] = point;
return low;
}
void QuickSort ( int arr[ ] , int low, int high) {
int point;
if ( low < high) {
point = Partition ( arr, low, high) ;
QuickSort ( arr, low, point - 1 ) ;
QuickSort ( arr, point + 1 , high) ;
}
}
int main ( ) {
int arr[ ] = { 49 , 38 , 65 , 97 , 76 , 13 , 27 , 49 } ;
int len = sizeof ( arr) / sizeof ( int ) ;
QuickSort ( arr, 0 , len - 1 ) ;
printf ( "快速排序结果为:" ) ;
for ( int i = 0 ; i < len; ++ i) {
printf ( "%d " , arr[ i] ) ;
}
return 0 ;
}
运行效果图
int arr[ ] = { 49 , 38 , 65 , 97 , 76 , 13 , 27 , 49 } ;