2019-05-22

代码错误还未修改,明天继续


#include<stdio.h>

/*快排思想:首先选择一个数组中的值作为划分标准,这个值

  这个值 为了规避最坏情况,可以采用第一个,第二个或者随机

  将这个值和第一个值交换 ,然后定义两个指针从两头遍历

  左边走到大于划分标准值,右边走到小于等于标准值时

  交换两者的位置,直到右指针和左指针重合

*/

int Paration(int a[],int begin, int end);//指定要排序的数组和

void sortP(int a[],int begin,int end);

void swap(int *a, int *b);

int main()

{

int a[] = {7, 2, 4, 11, 77, 5, 6, 20};

sortP(a, 0, 7);

return 0;

}

int Paration(int a[], int begin, int end)

{//这里选择第一个值为划分值

int i = -1;

int l = begin;

int r = end - 1;

while (l < r)

{

while (a[l++] < a[0]);

while (a[r--] >= a[0]);

swap(&a[l - 1],&a[r+1]);

}

swap(&a[0], &a[r-1]);

i = r - 1;

return i;

}

void swap(int *a, int *b)

{

int temp = *a;

*a = *b;

*b = temp;

}

void sortP(int a[], int begin, int end)

{

if (begin < end)

{

int i = Paration(a, begin, end);

sortP(a, begin, i - 1);

sortP(a, i + 1, end);

}

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容