重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

c语言快排库函数 c语音快排

C语言 快排函数

函数kuaipai1 进入了无限死循环。

创新互联是一家专业提供广南企业网站建设,专注与成都网站设计、成都做网站、HTML5建站、小程序制作等业务。10年已为广南众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

递归函数没有一个节点判定递归结束,导致进入死循环

系统堆栈用完,程序崩溃。

程序调试报告有无限死循环危险,运行后就直接崩溃,导致栈溢出。

用c语言编写函数QuickSort()来实现快速排序

#include stdlib.h

#include stdio.h

#define MAXN 8

#define MOD 1024

void QuickSort(int *arr, int low, int high)

{

if (low = high) return;

//保存排序区间的 起始位置和终点位置

int left = low, right = high;

//默认 左边第一个元素 为标志

int key = arr[low];

while (low  high)

{

while (low  high  arr[high] = key) --high;

arr[low] = arr[high];

while (low  high  arr[low] = key) ++low;

arr[high] = arr[low];

}

arr[low] = key;

//每次排序后都分成两部分[left, low) (low, right]

//arr[low]的位置是一定是有序的

QuickSort(arr, left, low - 1);

QuickSort(arr, low + 1, right);

return;

}

int main(void)

{

int n;

scanf("%d", n);

int arr[MAXN] = {0};

int i;

for (i = 0; i  n; ++i)

scanf("%d", arr[i]);

//输入是默认为生活中习惯的数组左边第一个为:编号1

int s, m;

scanf("%d %d", s, m);

//转成计算机数组第一个为:编号0

s--; m--;

//快排

QuickSort(arr, s, m);

//输出

for (i = s; i = m; ++i)

{

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

}

return 0;

}

//测试数据

//8

//1 2 3 4 5 6 7 8

//2 6

输出 6 5 4 3 2

C语言字符串快速排序函数

#include stdio.h

#includestdlib.h

#includestring.h

int comp(char *a,char *b)

{

while(*a==*b*a*b){a++;b++;}

return (int)*a-(int)*b;

}

int main(void)

{

char s[1000][20];

int i,n;

scanf("%d\n",n);

for(i=0;in;i++)

gets(s[i]);

qsort(s,n,sizeof(s[0]),comp);

printf("\n");

for(i=0;in;i++)

puts(s[i]);

system("pause");

return 0;

}

C语言,结构体快排

自定义一个比较函数,直接调用快排库函数qsort即可。举例如下:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "stdlib.h"

#include "time.h"

struct ln{

int data,score,math;

}ss[100];

int mycmp(const void *a, const void *b){//自定义比较函数

return ((struct ln*)a)-data-((struct ln*)b)-data;//若要降序,-号前后变量交换

}//data改为score或math就可按相应要素排序

int main(void){//测试一下……

int i;

srand((unsigned)time(NULL));

for(i=0;i100;ss[i++].data=rand()%1000);

qsort(ss,100,sizeof(struct ln),mycmp);

for(i=0;i100;printf("%4d",ss[i++].data));

printf("\n");

return 0;

}


本文标题:c语言快排库函数 c语音快排
分享网址:http://cqcxhl.com/article/doeedgp.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP