C语言---快速排序算法实现

来源:互联网 发布:dbscan聚类算法 编辑:程序博客网 时间:2024/05/21 10:02

快速排序算法是冒泡排序的改进算法,其核心思想在于:通过一趟排序将一堆带排序序列分割成两个独立的序列,其中一部分记录的关键字比另一部分记录的关键字小,然后再分别对这两部分进行类似的分割,直到排序完成。重难点在:分割。

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

/*quicksort algorithm*/

//快速排序重在分割,分割完成即排序完成;
static int Partition(int data[],int low,int high)

{

int i = 0;

int j = 0;
int priviorData = data[low];

while(low<high)
{
while(low<high&&data[high]>=priviorData)
{
--high;
}

data[low] = data[high];

while(low<high&&data[low]<=priviorData)
{
++low;
}
data[high] = data[low];
}

data[low] = priviorData;

return low;//return privior index position
}


static void QuickSort(int data[],int low,int high)
{
int priviorIndex = low;

if(low<high)
{
priviorIndex = Partition(data,low,high);
QuickSort(data,low,priviorIndex-1);
QuickSort(data,priviorIndex+1,high);
}
}


static void showArry(int data[],int length)
{
int k = 0;

for(k=0;k<6;k++)
{
printf("x[%d] = %d , ",k,data[k]);
}
printf("\n\n");
}


void main()
{
int k = 0;
int x[] = {9,6,5,3,10,2};

showArry(x,6);
QuickSort(x,0,5);
showArry(x,6);
}
0 0
原创粉丝点击