您的位置:首页 > 其它

快速排序 一个简单示例

2013-03-10 20:17 225 查看

sort.c

void swap(int iList[], int a, int b)
{
int temp;

temp = iList[a];
iList[a] = iList[b];
iList[b] = temp;
}

void quickSort(int iList[],int left, int right)
{
int last;
int i;

if(left < right)
{
swap(iList, left, (left + right) / 2);//left original value is 0, that is wrong!!
last = left;
for(i = left + 1; i <= right; i++)
{
if(iList[i] < iList[left])
{
swap(iList, i, last);//usefull only when iList[i] >= iList[left] has happened
}
}
swap(iList, left, last);
quickSort(iList, left, last - 1);
quickSort(iList, last + 1, right);
}
}

main.c

//a example of quick sort
#include <stdio.h>

int iList[] = {23, 43, 55, 122, 11, 234};

int main(void)
{
void quickSort(int iList[], int left, int right);
int iLength;
int i;

iLength = sizeof(iList) / sizeof(iList[0]);

quickSort(iList, 0, iLength - 1);

for(i = 0; i < iLength; i++)
{
printf(i == iLength - 1 ? "%d\n" : "%d,", iList[i]);
}

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