- 博客(1)
- 资源 (4)
- 收藏
- 关注
快速排序算法
快速排序算法(C语言版)
#include <stdio.h>
#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]);
}
}
2012-04-25
基于AT89S52单片机的音乐盒--包含灯光控制,灯光亮度调节 的c程序
该c程序包含两大模块,音符发声部分和灯光控制部分。通过小软件产生各种音符的代码,将代码存入数组,一个数组就是一首歌。灯光部分用单片机的P0和P2口控制,涵盖走马灯,流水灯,渐暗,渐亮,该部分还通过用延时的方式模仿PWM输出控制灯的亮度,使改作品更具人性化
2010-06-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人