快速排序 加入宏定义 方便屏蔽代码
2013-03-12 00:00
106 查看
#include <stdio.h> #include <stdlib.h> //#include <window.h> #define NUMBER_COUNT 30 //改变该数字改变输入的变量数量 #define NUMER_PER_LINE 8 //改变该数字改变每行显示的数字数量 #define NUM_KEYIN_ENABLE 0 //设置为0 输入为随机数 设置为1 手动输入数据 #define DEBUG_LOOP_ENABLE 0 //设置为1 显示递归的中间变量 设置为0关闭中间变量显示 void printf_numbers(int* _display, int _count); void sort_bubble(int* _value); void sort_quick(int* _value, int _count); int main(int argc,char* argv) { int value[NUMBER_COUNT]; int i; for(i = 0;i < NUMBER_COUNT;i++) { #if NUM_KEYIN_ENABLE printf("Please Enter the number of value[%d] :",i); scanf("%d", &value[i]); printf("\n"); #else value[i] = rand(); //随机数范围 0-32767 #endif } value[0] = 12000; //定义第一个数字..... 实际操作操作中key需要另外定义 printf("\nBefore Sort"); printf_numbers(value,NUMBER_COUNT); // sort_bubble(value); sort_quick(value,NUMBER_COUNT); printf("\nAfter Sort"); printf_numbers(value,NUMBER_COUNT); return 0; } void sort_bubble(int* _value)//冒泡排序 { int i,j,k; for(i = 0;i<NUMBER_COUNT;i++) { for(j = i;j<NUMBER_COUNT;j++) { if(_value[i]>_value[j]) //冒泡 { k = _value[i]; _value[i] = _value[j]; _value[j] = k; } } } } void sort_quick(int* _value, int _count) //随机快速排序 { int i = 0,j = _count,key = 0,temp; if(_count <= 1) //用于终止递归 return; while(i < j) { while(i < j) //小数左移 { if(_value[key] > _value[j]) { temp = _value[key]; _value[key] = _value[j]; _value[j] = temp; key = j; break; } j--; } while(i < j) //大数右移 { if(_value[key] < _value[i]) { temp = _value[key]; _value[key] = _value[i]; _value[i] = temp; key = i; break; } i++; } } #if DEBUG_LOOP_ENABLE printf("sorted\n"); printf_numbers(_value,_count); printf("to be sort\n"); printf_numbers(_value,key); printf_numbers(&_value[key+1],_count-key-1); #endif sort_quick(_value,key); //左边递归 sort_quick(&_value[key+1],_count-key-1);//右边递归 return; } void printf_numbers(int* _display, int _count) //加入第二参数 方便显示中间数组 { int i; for(i = 0; i<_count;i++) { if((i%_count)==0) printf("\n"); //控制换行 printf("%5d\t",_display[i]); } printf("\n"); }
相关文章推荐
- python简洁代码实现快速排序
- eclipse 阅读代码 快捷键 快速方便
- 排序算法原理及其Java代码(快速排序、冒泡排序、直接插入排序、简单选择排序)
- 谷歌(Chrome)浏览器中快速解除网页屏蔽鼠标右键、复制的方法/代码
- 选择排序、快速排序代码
- JAVA排序算法实现代码-快速(Quick Sort)排序
- 算法代码实现之快速排序,Golang(Go语言)实现
- 快速排序函数代码
- 快速排序及代码实现
- python 快速排序代码
- 快速排序代码
- 快速排序--Java实现代码
- 快速排序的C语言代码实现
- 冒泡排序,选择排序,快速排序的代码
- 最近又动手重写了插入,快速排序,单链表,环状双链表,代码如下
- 快速排序:源码(C++)--伪代码--时间复杂度解析
- 归并排序快速排序java代码
- JS常见的冒泡排序、快速排序、插入排序代码分享
- 快速排序代码
- 【经典代码】快速排序核心代码