您的位置:首页 > 理论基础 > 数据结构算法

《大话数据结构》读书笔记之快速排序源码及其优化

2013-08-18 12:13 281 查看
#include <stdio.h>

void Swap(int *a, int *b)
{
int tem = *a;
*a = *b;
*b = tem;
}

int Partition(int a[], int low, int high)
{
int pivotkey = a[low];

while (low < high)
{
while (low < high && a[high] <= pivotkey)
{
--high;
}

//Swap(&a[low], &a[high]);		//pivotky的值保存在a[high]中
a[low] = a[high];				//算法优化,把交换改为赋值

while (low < high && a[low] >= pivotkey)
{
++low;
}

//Swap(&a[high], &a[low]);		//pivotkey的值保存在a[low]中
a[high] = a[low];
}

a[low] = pivotkey;
return low;
}

void QSort(int a[], int low, int high)
{
int pivotLoc;

if (low < high)
{
pivotLoc = Partition(a, low, high);
QSort(a, low, pivotLoc - 1);
QSort(a, pivotLoc + 1, high);
}
}

void QuickSort(int a[], int n)
{
QSort(a, 0, n-1);
}

int main()
{
int arr[5];
int index;

for (index = 0; index < 5; index++)
{
scanf("%d", &arr[index]);
}

QuickSort(arr, 5);

printf("\nAfter sorting:\n");
for (index = 0; index < 5; index++)
{
printf("%d\n", arr[index]);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息