插入排序_希尔排序_快速排序_冒泡排序_c算法.doc

上传人:壹****1 文档编号:544301390 上传时间:2023-03-02 格式:DOC 页数:16 大小:71KB
返回 下载 相关 举报
插入排序_希尔排序_快速排序_冒泡排序_c算法.doc_第1页
第1页 / 共16页
插入排序_希尔排序_快速排序_冒泡排序_c算法.doc_第2页
第2页 / 共16页
插入排序_希尔排序_快速排序_冒泡排序_c算法.doc_第3页
第3页 / 共16页
插入排序_希尔排序_快速排序_冒泡排序_c算法.doc_第4页
第4页 / 共16页
插入排序_希尔排序_快速排序_冒泡排序_c算法.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《插入排序_希尔排序_快速排序_冒泡排序_c算法.doc》由会员分享,可在线阅读,更多相关《插入排序_希尔排序_快速排序_冒泡排序_c算法.doc(16页珍藏版)》请在金锄头文库上搜索。

1、/排序#include int partions(int l,int low,int high)int prvotkey=llow;l0=llow;while (lowhigh) while (low=prvotkey) -high; llow=lhigh; while (lowhigh&llow=prvotkey) +low; lhigh=llow;llow=l0;return low;void qsort(int l,int low,int high)int prvotloc;if(lowhigh) prvotloc=partions(l,low,high); /将第一次排序的结果作为枢轴

2、 qsort(l,low,prvotloc-1); /递归调用排序 由low 到prvotloc-1 qsort(l,prvotloc+1,high); /递归调用排序 由 prvotloc+1到 highvoid quicksort(int l,int n)qsort(l,1,n); /第一个作为枢轴 ,从第一个排到第n个void main()int a11=0,2,32,43,23,45,36,57,14,27,39;for (int b=1;b11;b+)printf(%3d,ab);printf(n);quicksort(a,11);for(int c=1;c0 & m4) syste

3、m(cls); printf(tt*n); printf(tttt 排序方法选择n); printf(tt*n); printf(ttt请选择排序算法:1直接插入排序 n); printf(ttt请选择排序算法:2希尔排序 n); printf(ttt请选择排序算法:3冒泡排序 n); printf(ttt请选择排序算法:4快速排序n); printf(ttt请选择排序算法:5简单选择排序n); scanf(%d,&n); switch(n) case 1: printf( 直接插入排序前:n); for( j=1;jnumv;j+) printf(%d ,am-1j); printf( n直

4、接插入排序结果为:n); BiInsertsort(am-1,numv-1); break; case 2: printf( n希尔排序前:n); for( j=1;jnumv;j+) printf(%d ,am-1j); printf( n希尔排序结果为:n); ShellSort(am-1, numv-1); break; case 3: printf( n冒泡排序前:n); for( k=1;knumv;k+) printf(%d ,am-1k); printf( n冒泡排序结果为:n); BubbleSort(am-1, numv-1); break; case 4: printf(

5、n快速排序前:n); for( j=1;jnumv;j+) printf(%d ,am-1j); printf( n快速排序结果为:n); QuickSort(am-1,0,numv-1); for( i=1;inumv;i+) printf(%d ,am-1i); printf(n); break; case 5: printf( n简单选择排序前:n); for( j=1;jnumv;j+) printf(%d,am-1j); printf( n简单选择排序结果为:n); SelectSort(am-1,numv-1); break; default: printf(输入错误!); sys

6、tem(pause);/等待 m=0; system(cls); printf(tt*n); printf(tttt 排 序n); printf(tt*n); printf(ttt请选择测试数据类型:1正序 n ); printf(ttt请选择测试数据类型:2逆序n ); printf(ttt请选择测试数据类型:3随机n ); printf(ttt返回,请按4n ); printf(tt*n); scanf(%d,&m); if(m=4) printf(*_*) 再见!); else printf(输入错误!);二、排序方法选择void BiInsertsort(int r, int n) /

7、插入排序(折半) for(int i=2;i=n;i+) if (riri-1) r0 = ri; /设置哨兵 int low=1,high=i-1; /折半查找 while (low=high) int mid=(low+high)/2; if (r0high;j-) rj+1 = rj; /后移 rj+1 = r0; for(int k=1;k=1;d=d/2) /以d为增量进行直接插入排序 for (int i=d+1;i0 & r0rj; j=j-d) rj+d = rj; /记录后移d个位置 rj+d = r0; for(int i=1;i=n;i+) printf(%d ,ri);

8、 printf(n);/*起泡排序*/void BubbleSort(int r, int n) int temp,exchange,bound; exchange=n; /第一趟起泡排序的范围是r0到rn-1 while (exchange) /仅当上一趟排序有记录交换才进行本趟排序 bound=exchange; exchange=0; for (int j=1; jrj+1) temp=rj; rj=rj+1; rj+1=temp; exchange=j; /记录每一次发生记录交换的位置 for(int i=1;i=n;i+) printf(%d ,ri); printf(n);int Partition(int r, int first, int end) /快速排序一次划分 int i=first;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号