为了账号安全,请及时绑定邮箱和手机立即绑定

能不能完整的解释一下程序呀,看不懂。特别是明明是一维数组,为什么用i,j两个变量来循环?

能不能完整的解释一下程序呀,看不懂。特别是明明是一维数组,为什么用i,j两个变量来循环?

csh_001 2016-03-31 15:57:55
#include<stdio.h> #include<stdlib.h> #include<time.h> typedef int KeyType; typedef struct { KeyType key; }DataType; void BubbleSort(DataType a[],int n) { int i,j,flag=1; DataType temp; for(i=1;i<n&&flag==1;i++) { flag=0; for(j=0;j<n-i;j++) { if(a[j].key>a[j+1].key) { flag=1; temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } } void QuickSort(DataType a[],int low,int high) { int i=low,j=high; DataType temp=a[low]; while(i<j) { while(i<j&&temp.key<=a[j].key)j--; if(i<j) { a[i]=a[j]; i++; } while(i<j&&a[i].key<temp.key)i++; if(i<j) { a[j]=a[i]; j--; } } a[i]=temp; if(low<i)QuickSort(a,low,i-1); if(i<high)QuickSort(a,j+1,high); } void main(void) { int i,n=30000; double dif; time_t start,end; DataType test1[30000],test2[30000]; for(i=0;i<n;i++) { test1[i].key=rand(); test2[i].key=test1[i].key; } time(&start); BubbleSort(test1,n); time(&end); dif=difftime(end,start); printf("冒泡排序:%.2f秒\n",dif); time(&start); QuickSort(test2,0,n-1); time(&end); dif=difftime(end,start); printf("快速排序:%.2f秒\n",dif); }
查看完整描述

1 回答

?
是王小二呀

TA贡献88条经验 获得超19个赞

你先想想,如果你不给程序一个看的见得控制数字,,它怎么知道要跑几次?,,第一次给个i,知道跑i次,你不再给个j,程序怎么知道每一个i里面跑几次?再给个j,每一个i里面程序才知道跑几次,,以此类推,,至于每一个i里面的每一个j里面要让计算机怎么跑,那就是你该做的了,,

查看完整回答
反对 回复 2016-04-09
  • 1 回答
  • 0 关注
  • 1245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信