快速排序算法

时间:2015-05-16 05:47:21
【文件属性】:

文件名称:快速排序算法

文件大小:159KB

文件格式:RAR

更新时间:2015-05-16 05:47:21

快速排序

快速排序算法(C语言版) #include #include "type.h" #define Q_SIZE 10 /************************************* 模块内部数组或变量定义 **************************************/ static UINT8 q_array[Q_SIZE] = {0}; //static UINT8 m_array_tmp[M_SIZE] = {0}; /* 辅助数组,存放排序的中间结果 */ /************************************* 函数定义 **************************************/ /******************************************************************************************* 函数名:UINT8 splt( UINT8 * m_ptr, UINT8 q_low, UINT8 q_high, UINT8 q_pos ) 入口参数列表:m_ptr, q_pos 入口参数描述:数组的地址,数组的首元素和尾元素位置,指向主元位置的指针 返回值描述:无 函数功能:使数组经过排列后小于或等于x的元素在x前面,x在大于它的元素前面(x = q_array[*q_pos]) ********************************************************************************************/ UINT8 splt( UINT8 * q_ptr, SINT8 q_low, SINT8 q_high ) { UINT8 x = 0; SINT8 i = 0; SINT8 j = 0; UINT8 q_tmp = 0; i = q_low; x = q_ptr[q_low]; for (j = q_low + 1; j <= q_high; j++) { if (q_ptr[j] <= x) { i++; if (i != j) { q_tmp = q_ptr[i]; q_ptr[i] = q_ptr[j]; q_ptr[j] = q_tmp; } } } q_tmp = q_ptr[i]; q_ptr[i] = q_ptr[q_low]; q_ptr[q_low] = q_tmp; return i; } /******************************************************************************************* 函数名:void quicksort( UINT8 * m_ptr, UINT8 m_low, UINT8 m_high ) 入口参数列表:m_ptr, m_low, m_high 入口参数描述:数组的地址,数组的首元素和尾元素的索引 返回值描述:无 函数功能:对数组进行排序,产生非降序的数组 ********************************************************************************************/ void quicksort( UINT8 * q_ptr, SINT8 q_low, SINT8 q_high ) { UINT8 q_w; if (q_low < q_high) { q_w = splt(q_ptr, q_low, q_high); quicksort(q_ptr, q_low, q_w - 1); quicksort(q_ptr, q_w + 1, q_high); } } /****************************************************************************** 函数名:main( void ) 入口参数列表:无 入口参数描述:无 返回值描述:无 函数功能:主函数,用于测试 *******************************************************************************/ void main( void ) { UINT8 i, q_num = 0; printf("请输入10个2位整数:\n"); for (i = 0; i < Q_SIZE; i++) { scanf("%d", &q_num); q_array[i] = q_num; } quicksort(q_array, 0, 9); for (i = 0; i < Q_SIZE; i++) { printf("%d ", q_array[i]); } }


【文件预览】:
QUICKSORT
----quicksort.c(3KB)
----QUICKSORT.dsw(524B)
----QUICKSORT.ncb(41KB)
----type.h(252B)
----Debug()
--------vc60.pdb(44KB)
--------quicksort.obj(4KB)
--------QUICKSORT.exe(180KB)
--------QUICKSORT.pdb(433KB)
--------QUICKSORT.ilk(200KB)
--------QUICKSORT.pch(172KB)
--------vc60.idb(33KB)
----QUICKSORT.dsp(4KB)
----QUICKSORT.opt(48KB)
----QUICKSORT.plg(896B)

网友评论