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);
}
发布了61 篇原创文章 · 获赞 18 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章