将a数组部分给b数组c语言,C语言第6章1 数组.ppt

C语言第6章1 数组

【例】对10个数从小到大排序 int a[10]; int i,j,t; printf("input 10 numbers :\n"); for (i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++) //进行9趟排序 for(i=0;i<9-j;i++) //每趟比较9-j次 if (a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} //交换两数 printf("the sorted numbers :\n"); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); 输入各整数 j =0;j<9 i =0;i<9-j a[i]>a[i+1] 真 假 t=a[i] a[i]=a[i+1] a[i+1]=t 输出排序后的数 运行结果: input 10 numbers: 13 20 64 78 21 8 14 30 45 23↙ the sorted numbers: 8 13 14 20 21 23 30 45 64 78 【例】用选择法对数组中的数进行排序 5 7 4 2 8 6 p p=0,a[p]=5 5 7 4 2 8 6 p a[p]与a[1]比,p记下最小元素位置 p=0,a[p]=5 5 7 4 2 8 6 p a[p]与a[2]比,p记下最小元素位置 p=2,a[p]=4 5 7 4 2 8 6 p a[p]与a[3]比,p记下最小元素位置 p=3,a[p]=2 5 7 4 2 8 6 p a[p]分别与a[4],a[5]比, p记下最小元素位置p=3,a[p]=2 j=0;p=j; //j每趟最小值的位置 for(i=j+1;ia[i]) { p=i; } p记下a[0]~a[5]间的最小数的位置。 若p!=j,则调换p位置元素与第j元素的值 5 7 4 2 8 6 p a[p]分别与a[4],a[5]比, p记下最小元素位置p=3,a[p]=2 t=a[j]; a[j]=a[p] ; a[p]=t; 以上是一趟选择排序过程,后面可按此思路,j从1循环至4,从a[j+1]~a[5]中找出最小元素与a[j]交换,那么经过5趟选择排序后,将得到从小到大的顺序数。 2 7 4 5 8 6 j 原始数据: 5 7 4 2 8 6 第1趟排序: 2 7 4 5 8 6 a[0] a[1] a[2] a[3] a[4] a[5] 第2趟排序: 2 4 7 5 8 6 第3趟排序: 2 4 5 7 8 6 第4趟排序: 2 4 5 6 8 7 第5趟排序: 2 4 5 6 7 8 选择法排序过程 // 选择法排序程序 int main() { int i,j,p,t, a[6]={5,7,4,2,8,6}; for(j=0;j<5;j++) { p=j; //标记当前最小元素下标 for(i=j+1;i<=5;i++) //经过5趟排序 { if(a[p]>a[i]) p=i; //比较,记录每趟选 // 择中最小元素位置 } if(p!=j) // 交换j和p位置上的数 { t=a[j];a[j]=a[p];a[p]=t; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值