冒泡、选择、插入、快速排序程序的完成.docxVIP

冒泡、选择、插入、快速排序程序的完成.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二、程序及主要程序解析: /* vim: set ts=4 sw=4: */ #inelude stdio.h #include stdlib.h #include string.h #include time.h //交换元素次数 //交换元素次数 //原始数组宏定义 int a[NUMl; void menu(){ system(cls); printf(M\n 排序算法示例 \nH); printf(n\n\tl.冒泡排序\n“); printf(n\t2.选择排序\n”); printf(\t3.插入排序\n); printf(H\t4.快速排序\n”); printf(H\t5.希尔排序\n”); printf(\tO.退出演示\n\n); retum; } void Traverse(int a|J,int n) { int i,t=l; printf(\n All Numbers in the Array \n); for (i=0; iNUM; i++) 〃生成随机数 〃输出数〃每15个数一行〃输击〃冒泡排序〃定义变量printf(M%4d 〃输出数 〃每15个数一行 〃输击 〃冒泡排序 〃定义变量 } putchaMVn); return; } void BubbleSort(int a[],int n) { rear,i,temp j,counter; rear= N?1; for(counter=0;counterN ? 1 ;counter++) { for(j=0;jrear;j++) if(aU]aU+l]) { temp=a[j]; aUJ=aU+l]; a[j+l]=temp;count++;} aUJ=aU+l]; a[j+l]=temp; count++; } rear-; return; } void SelectSort(int a[],int n) { int ij,t,min; for (i=0; in-l; i++) { min = i; for (j=i+l; jn; j++) if (a|j]a[min]) min = j; if(min!=i) { t = a[ij; a[i] = a[min]; afmin] = t; count++; } } return; } void InsertSort(int a[],int n) { int for (i=l; in; i++) { t = a[i]; for (j=i; ta[j-l]j0; j—) { a[j] = a[j-l]; a[j-ll = t; count+4-; return; } void QuickSort(int a[],int n) { int *l=a,*r=a+n-1 ,t=a[0]; 〃选择排序 〃定义变量 〃进行循环 〃设最小值为i 〃j在i后面将数组两两比较 〃将小的数放在前面 〃最小值不等于a[i] 〃进行交换 〃计数器随即增加 〃插入排序 〃定义变量 〃进行循环扫描数组 〃借助三方进行比较 〃将较小的元素与子序中的元素交换 〃计数器增加 〃快速排序 〃定义指针从前向后从后向前 讦(l=r) return; while (lr) 〃进行顺序表分割 while (lr *r=t) r—;*1 = *r; while (lr *r=t) r—; *1 = *r; while (lr *l=t) 1++; 〃将「逐渐减小,并逐次比较PW)与t,直到发 现一个将P(r)t为止,将P(r)移动到P(l)的位置匕 〃将I逐渐增大,并逐次比较P(l)与t,直到发 现一个将PWt为止,将P(l)移动到P(C的位置上。 〃指针「与将1同一个位置(尸1)为止 count += 2; } *1 = t; QuickSort(aJ-a); QuickSort(l+1 ,a+n-l-l); } 〃希尔排序void ShellSort(int afLint n) 〃希尔排序 int gap,ij,t; for (gap=n/2; gap0; gap/=2) // h二n/2k (k=12…,[log2n])其中 n 为代排 序的序列长度 for (i=gap; in; i++) for (j=i-gap; j=Oa[j]a[j+gapl; j-=gap) 〃进行比较 t = a|jj; a〔j] = a|j+gap]; 叩+gap] = t; count++; 〃交换位置 return; } /*主函数*/ int main(void) int i,op,t[NUM]; srand((unsigned)time(NULL)); for (i=0; iNUM; i++) a[il = rand()%1000;

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档