一个排序算法的疑问?

saishow 2010-09-27 11:52:42
先提问再看代码
quicksort()函数是快排的算法.
jh()函数是我自己写的一个

疑问.当我用jh这个函数运行时到一定的时候计算卡一小段时间不知道在干嘛.
像是在释放什么..这是什么原因???

两个算法相比得到的时间是
jh quicksort
122.172s VS 32.266s


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_NUM 100000
void jh(int a[]);
void print_array(int A[])
{
int i = 0;
for(i=0; i<MAX_NUM; i++)
{
if((i+1)%5 == 0)
printf("%d\n",A[i]);
else
printf("%d\t",A[i]);
}
}


void swap(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}

int partition(int A[], int start, int end)
{
int x = A[end];
int i = start-1;
int j = start;
for( ; j<end; j++)
{
if(A[j]<x)
{
i++;
swap(A+i, A+j);
}
}
swap(A+i+1, A+end);
return i+1;
}


void quicksort(int A[],int start, int end)
{
if(start<end)
{
int q = partition( A, start, end);
quicksort( A, start, q-1);
quicksort( A, q+1, end);
}
}

int main(int argc, char *argv[])
{
int i;
int A[MAX_NUM];
srand((unsigned int)time(NULL));
for(i=0; i<MAX_NUM; i++)
A[i] = rand()%MAX_NUM + 1;
printf("the original array is:\n");
print_array(A);
//quicksort(A, 0, MAX_NUM-1);
jh(A);
printf("after quick sort the array is:\n");
print_array(A);

return 0;
}
void jh(int a[])
{
int i,n,temp;
for(i = 0 ;i < MAX_NUM;i++)
{
for(n = i + 1; n < MAX_NUM;n++)
{
if(a[i] > a[n])
{
temp = a[i];
a[i] = a[n];
a[n] = temp;
}
}
}
}


...全文
204 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenchenman 2010-09-28
  • 打赏
  • 举报
回复
我运行了,也卡了一下,难道是人品??
saishow 2010-09-28
  • 打赏
  • 举报
回复
当散分吧.
saishow 2010-09-28
  • 打赏
  • 举报
回复
搞清楚了.谢谢大家.
ForestDB 2010-09-28
  • 打赏
  • 举报
回复
怎么个卡法。
somebody 2010-09-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 truelance 的回复:]
双重循环(10^5)^2 = 10^10, 100亿啊,当然卡了。
[/Quote]
我也这么认为
某某9 2010-09-28
  • 打赏
  • 举报
回复
搞清楚了。
那我接个分吧!
十八道胡同 2010-09-28
  • 打赏
  • 举报
回复
楼主的冒泡法 也不是最优的
熊熊大叔 2010-09-28
  • 打赏
  • 举报
回复
双重循环(10^5)^2 = 10^10, 100亿啊,当然卡了。
xuehaipp68 2010-09-28
  • 打赏
  • 举报
回复
LZ的MAX_NUM是100000,MAX_NUM的次方自然就卡了,这个次数也太恐怖了些。。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧