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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章