Quick-sort
来源:互联网 发布:ie11调试器看不到js 编辑:程序博客网 时间:2024/06/10 13:55
#include <stdio.h>#include <string.h>#define ARR_LEN15static int Arr[ ARR_LEN] = { 0,1,4,7,2,5,8,3,6,9, 7, 7, 8};static intArr_back[ ARR_LEN];static int DF = 0;typedef int INDEX;static void show_arr( int array[], INDEX left, INDEX right){ int i; printf(" [ left = %d]", left); for( i=left; i<=right; i++ ) { printf("%4d", array[i]); } printf("[right = %d]\n", right);}static void exchange( int *val1, int *val2){ int temp; temp = *val1; *val1 = *val2; *val2 = temp;}static int pivot( int array[], INDEX left, INDEX right){ //reference value INDEX mInd = (left + right)/2; //divide array into two parts int i = 0; int LLen = 0, RLen = 0; for( i=left; i<=right; i++ ) { DF++; if( i==mInd) { continue; } if( array[i]< array[mInd] ) { Arr_back[left + LLen] = array[i]; LLen++; } else { Arr_back[right - RLen] = array[i]; RLen++; } } Arr_back[left + LLen] = array[mInd]; memcpy( array+left, Arr_back + left, (right-left + 1)*sizeof(int)); return left + LLen;}static void quick_sort( int array[], INDEX left, INDEX right){ static int t = 0; printf(" %-4d [%3d,%3d]\n", t++,left, right); if( right-left>=2) {//继续向下分段 int p; p = pivot( array, left, right); quick_sort( array, left, p-1); quick_sort( array, p+1, right); } else if( right -left ==1) {//只有两个 DF ++; if( array[left] > array[right]) { exchange( array + left, array + right); } }}int main( ){ show_arr( Arr, 0, ARR_LEN-1); quick_sort( Arr, 0, ARR_LEN-1); show_arr( Arr, 0, ARR_LEN-1); printf(" Time Frequent: %d \n", DF);}
0 0
- Quick Sort
- Quick Sort
- quick sort
- quick sort
- quick sort
- Quick Sort
- Quick Sort
- quick sort
- Quick Sort
- Quick Sort
- Quick Sort
- Quick Sort
- Quick Sort
- Quick Sort
- Quick Sort
- Quick Sort
- quick sort
- Quick sort
- UTF-8和GBK编码
- 全排列
- 风雨java路之【基础篇】——异常处理今与昔
- 黑马程序员1. 面向对象
- 快速排序
- Quick-sort
- GUI程序控制台输出调试信息
- ibatis 中 $与#的区别
- magento URL分析,查找修改相应文件
- CnForums学习
- JMS在Spring框架下的应用
- leetcode: Sort Colors
- 在Java中的使用RSA
- 九度1002