【文件属性】:
文件名称:快速排序算法
文件大小: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)