1 / 46
文档名称:

c语言-算法.ppt

格式:ppt   大小:892KB   页数:46页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c语言-算法.ppt

上传人:iluyuw9 2017/2/17 文件大小:892 KB

下载得到文件列表

c语言-算法.ppt

相关文档

文档介绍

文档介绍:排序问题 、顺序和选择法的基本程序。(1)冒泡法的函数。 void bubble(int a[ ],int n) { int i,j,t; for (i=0;i<n-1;i++) for (j=0;j<n-i-1;j++) if (a[j]>a[j+1]) { t=a[j];a[j]=a[j+1];a[j+1]=t; } } void sort(int * a,int n) { int i,j,t; for (i=0;i<n-1;i++) for (j=i+1;j<n;j++) if ( * (a+i)> * (a+j)) { t= * (a+i); * (a+i)= * (a+j); * (a+j) =t; } } (2)顺序交换法的函数。 if (a[i]>a[j]) { t=a[i]; a[i]=a[j];a[j] =t; } void sort1(int * a,int n) { int i,j,k,t; for (i=0;i<N-1;i++) { k=i; for (j=i+1;j<N;j++) if (a[k]>a[j]) k=j; if (i!=k) { t=a[i];a[i]=a[k];a[k]=t; } }} (3)选择排序法的函数。例 2 提高冒泡排序的执行效率。 void bubble(int x[ ],int n) { int i,j,t,k=1; for (i=0;i<n-1&&k==1;i++) { k=0; for (j=0;j<n-i-1;j++) if (x[j]>x[j+1]) { t=x[j];x[j]=x[j+1];x[j+1]=t; k=1; } }} 例3插入排序法。插入法 1: 将一个数插入到有序的(由小到大) 数列中,插入后数列仍然有序。插入法 2 :用上面的插入方法将一批无序的数排序。插入法 3:在比较的过程中随时插入。前扫描和后扫描。#include "" #define N 10 main() { int i,k,x[N],key,m=9; printf(" 请输入%d 个由小到大排列的整数\n",m); for (i=0;i<m;i++) scanf("%d",&x[i]); printf(" 再输入一个待插入的整数\n"); scanf("%d",&key); i=0; while (key>=x[i] && i<m) i++; for (k=m-1;k>=i;k--) x[k+1]=x[k]; x[i]=key; m=m+1; for (i=0;i<m;i++) printf("%4d",x[i]); printf("\n"); } i k=m-1 m=9 i 12345679 10 10 98 key=8 #include "" #define N 10 main() { int i,j,k,x[N],key,m=1; printf(" 任意输入%d 个无序的整数\n",N); for (i=0;i<N;i++) scanf("%d",&x[i]); for (j=1;j<N;j++) { key=x[j]; i=0; while (key>=x[i] && i<m) i++; for (k=m-1;k>=i;k--) x[k+1]=x[k]; x[i]=key; m=m+1; } for (i=0;i<m;i++) printf("%4d",x[i]); printf("\n"); } 插入法 2 :用上面的插入方法将一批无序的数排序。#include "" #define N 10 main() { int i,k,x[N],key,m=1; printf(" 请输入任意%d 个无序的整数\n",N); for (i=0;i<N;i++) scanf("%d",&x[i]); for (i=1;i<N;i++) { key=x[i]; if (key>=x[m-1]) x[m]=key; else { k=m-1;