C语言,快速排序算法

/***************************************************************************************
author:徐权
data:20150723
function:实现数组的快速排序算法


 ***************************************************************************************/


#include<stdio.h>
#include<stdlib.h>


#define N 20
void sort(int *,int,int);
int main(void)
{
int a[20] = { 4, 21, 56, 65, 435, 2, 124, 5, 34, 52, 12, 35, 235, 65745, 25, 4234, 546, 124, 346, 7657 };
sort(a, 0, N - 1);
for (int i = 0; i < N; i++)
{
printf("%6d  ",a[i]);
if ((i + 1) % 10 == 0)
{
printf("\n");
}
}


system("pause");
return 0;
}


//快速排序算法函数
void sort(int *str, int left, int right)
{
if (left >= right)
{
return;
}
int i = left;
int j = right;
int temp = str[i];
while (i < j)
{
while (i < j && temp <= str[j])
{
j--;
}
//查找,当找到第一个比temp小的数的时候,即将找到的这个数去覆盖str[i]这个的值,
str[i] = str[j];  
while (i < j && str[i] <= temp)
{
i++;
}


//查找,当找到第一个比temp大的数的时候,即将找到的这个数去覆盖str[j]这个的值,
str[j] = str[i];
}
str[i] = temp;//将中间记录值赋值给str[i]
sort(str, left, i - 1);
sort(str,i+1,right);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值