快速排序程序c语言,快速排序实例程序(C语言)

快速排序实例程序,C语言实现的详细如下:

#include

#include

#define MAX 7

int intArray[MAX] = {4,6,3,2,1,9,7};

void printline(int count){

int i;

for(i = 0;i

printf("=");

}

printf("=\n");

}

void display(){

int i;

printf("[");

// navigate through all items

for(i = 0;i

printf("%d ",intArray[i]);

}

printf("]\n");

}

void swap(int num1, int num2){

int temp = intArray[num1];

intArray[num1] = intArray[num2];

intArray[num2] = temp;

}

int partition(int left, int right, int pivot){

int leftTutorialser = left -1;

int rightTutorialser = right;

while(true){

while(intArray[++leftTutorialser] < pivot){

//do nothing

}

while(rightTutorialser > 0 && intArray[--rightTutorialser] > pivot){

//do nothing

}

if(leftTutorialser >= rightTutorialser){

break;

}else{

printf(" item swapped :%d,%d\n",

intArray[leftTutorialser],intArray[rightTutorialser]);

swap(leftTutorialser,rightTutorialser);

}

}

printf(" pivot swapped :%d,%d\n", intArray[leftTutorialser],intArray[right]);

swap(leftTutorialser,right);

printf("Updated Array: ");

display();

return leftTutorialser;

}

void quickSort(int left, int right){

if(right-left <= 0){

return;

}else{

int pivot = intArray[right];

int partitionTutorials = partition(left, right, pivot);

quickSort(left,partitionTutorials-1);

quickSort(partitionTutorials+1,right);

}

}

main(){

printf("Input Array: ");

display();

printline(50);

quickSort(0,MAX-1);

printf("Output Array: ");

display();

printline(50);

}

如果我们编译并运行上述程序,那么这将产生以下结果 -

Input Array: [4 6 3 2 1 9 7 ]

==================================================

pivot swapped :9,7

Updated Array: [4 6 3 2 1 7 9 ]

pivot swapped :4,1

Updated Array: [1 6 3 2 4 7 9 ]

item swapped :6,2

pivot swapped :6,4

Updated Array: [1 2 3 4 6 7 9 ]

pivot swapped :3,3

Updated Array: [1 2 3 4 6 7 9 ]

Output Array: [1 2 3 4 6 7 9 ]

==================================================

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值