【培训课件】数组应用的技巧与方法.pptxVIP

  • 1
  • 0
  • 约3.14千字
  • 约 40页
  • 2021-07-25 发布于北京
  • 举报

【培训课件】数组应用的技巧与方法.pptx

数组应用的技巧与方法;附加:计数器、累加器、累乘器;关于一维数组的问题;1. 什么是排序? 将一组杂乱无章的数据按一定的规律顺次排列起来。 ;排序算法;;直接插入排序;交换排序; 冒泡排序;选择排序;查找算法;折半查找;① 先设定3个辅助标志: low,high,mid, 显然有:mid= ?(low+high)/2? ② 运算步骤: (1) low =1,high =11 ,mid =6 ,待查范围是 [1,11]; (2) 若 ST.elem[mid].key key,说明 key?[ mid+1,high] , 则令:low =mid+1;重算 mid= ?(low+high)/2?;. (3) 若 ST.elem[mid].key key,说明key?[low ,mid-1], 则令:high =mid–1;重算 mid ; (4)若 ST.elem[ mid ].key = key,说明查找成功,元素序号=mid; 结束条件:(1)查找成功 : ST.elem[mid].key = key (2)查找不成功 : high≤low (意即区间长度小于0);有序插入;有序删除; 关于选择排序;程序一;改进程序;找鞍点的问题;for (i=0;i3;i++){ max=a[i][0]; for (j=0;j3;j++){ if (a[i][j]max){ max=a[i][j]; maxj=j; /*求出行中最大数*/ } } for(k=0,flag1=1;k3 flag1;k++){ if (maxa[k][j]) flag1=0; /*算出该数是否为列中最小*/ } if (flag1==1){ printf(\n第%d行,第%d列的%d是鞍点\n,i,maxj,max); flag2=1; /*打印鞍点*/ } if (flag2==0) printf(\n矩阵中无鞍点!\n); };折半查找的问题;将一个数组逆序转换 例如1,2,3,4,5,变为5,4,3,2,1;将一个数组逆序转换程序;关于二维数组的问题(双下标的应用);蛇行方阵问题;蛇行矩阵;蛇行方阵的排数方法;上三角(包括对角线);下三角(不含对角线);螺旋方阵问题;;; k=1; for (i = 0;i = (n - 1)/2;i++) { for (j = i;j = (n - i - 1);j++) { //上 a[i][j]=k; k++; } for (j = i;j=(n-i-1);j++) { //右 a[j][n-i]=k; k++; } for (j = n-i;j = i+1 ;j--) { //下 a[n-i][j]=k; k++; } for (j = n-i;j = i+1;j--) { //左 a[j][i]=k; k++; } } if (n % 2 == 0) { //最后一个,中间 a[n/2][n/2]=k; };方阵旋转问题;for (i = 0;i = (n - 1) / 2;i++) { for(j = i;j = (n - i - 1);j++) { temp=a[i][j]; a[i][j]=a[n-j][i]; a[n-j][i]=a[n-i][n-j]; a[n-i][n-j]=a[j][n-i]; a[j][n-i]=temp; } } 替换元素下标(也就是等式右边的部分)规律 x=n-j,y=i ;魔方阵;#include stdio.h #define MAXSIZE 15 int magic[MAXSIZE][MAXSIZE]; int cur_i = 0,cur_j; main(){ int count,size = 0,i,j; while((size % 2) == 0) { //输入阶数,只接受奇数 printf(\n enter squqre

文档评论(0)

1亿VIP精品文档

相关文档