数组排序 -- 2015/9/28
来源:互联网 发布:jboss 1099端口 编辑:程序博客网 时间:2024/05/22 06:13
编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排序,然后将这两个数组合并成一个升序数组
<span style="font-size:14px;">//// main.m// Test0928//// Created by Sara on 15/9/28.// Copyright (c) 2015年 Sara.Burton. All rights reserved.//#import <Foundation/Foundation.h>void traverse( int *array, int num ) { for (int i = 0; i < num ; i++) { printf("%d\t", array[i]); } printf("\n");}void sort( int *array, int num ) { for (int i = num ; i > 0; i--) { for (int j = 0 ; j < i - 1; j++) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } printf("\n");}int main(int argc, const char * argv[]) { int a[5] = {0}; int b[5] = {0}; int combine[10] = {0}; printf("输入两个包含5个元素的数组:\n"); printf("a数组:\n"); for (int i = 0; i < 5; i++) { scanf("%d",&a[i]); } printf("b数组:\n"); for (int i = 0; i < 5; i++) { scanf("%d",&b[i]); } /* for (int i = 5 ; i > 0; i--) { for (int j = 0 ; j < i - 1; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } if (b[j] > b[j + 1]) { int temp = b[j]; b[j] = b[j + 1]; b[j + 1] = temp; } } } for (int i = 0; i < 5; i++) { printf("%d\t", a[i]); } printf("\n"); for (int i = 0; i < 5; i++) { printf("%d\t", b[i]); } for (int i = 0 ; i < 10; i++) { if (i < 5) { combine[i] = a[i]; } else { combine[i] = b[i - 5]; } } for (int i = 10 ; i > 0; i--) { for (int j = 0 ; j < i - 1; j++) { if (combine[j] > combine[j + 1]) { int temp = combine[j]; combine[j] = combine[j + 1]; combine[j + 1] = temp; } } } printf("\n"); for (int i = 0; i < 10; i++) { printf("%d\t", combine[i]); } */ sort(a, 5); traverse(a, 5); sort(b, 5); traverse(b, 5);// for (int i = 0 ; i < 10; i++) {// if (i < 5) {// combine[i] = a[i];// } else {// combine[i] = b[i - 5];// }// }// sort(combine, 10); int j = 0; int k = 0; for(int i=0;i<10;i++) { if(a[j]<=b[k] && j < 5) { combine[i]=a[j]; j++; } else if(k< 5) { combine[i]=b[k]; k++; } } traverse(combine, 10); return 0;}</span><span style="font-size: 18px;"></span>
注意 : (方法解析)
文件中有三种方法,其中前两种原理相同,都是现将排序过后的两个的数组重新保存在 combine 数组中,之后对 combine 数组进行冒泡排序.
不同的是第一种方法是直接通过顺序思维方式写出来的,代码量大,且看起来不容易.
第二种方法是定义函数,定义了两个函数,一个是遍历函数,一个是排序函数,将main函数中的代码简化,减少代码量,然而,定义函数并不在今天的范围,所以又有了第三种方法.
在第三种方法中,并没有先将两个数组合并到 combine 中,而是通过比较直接向 combine 数组中填入有序数,此处具体实现如下:
<span style="font-size: 18px;"> </span><span style="font-size:14px;"> int j = 0; int k = 0; for(int i = 0;i < 10;i++) { if(a[j] <= b[k] && j < 5) { combine[i]=a[j]; j++; } else if( k < 5) { combine[i]=b[k]; k++; } }</span>===>分别用两个数组的第一个数比较,如果a数组的第一个数比b数组的第一个数小,就将 combine[0] = a[0],之后j++, 用 a[1]和 b[0]相比,如果 b[0] < a[1],就combine[1] = b[0],…,另外需要注意的就是数组越界问题,所以在比较大小的同时也要注意是否越界,如果越界,在赋值时就会出错.使 combine[5] 的值为 0;
0 0
- 数组排序 -- 2015/9/28
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- 数组排序
- android控件:WebView的初使用
- 系统学习ARM之五 --C语言和汇编混合编写
- C语言第八节-文件操作
- ocp-v13-043
- 关于Android Studio无法预览的问题
- 数组排序 -- 2015/9/28
- HDU5490 Simple Matrix
- Cocoapods配置第三方类库教程
- IBM超能云性能测试
- ocp-v13-044
- 规范变换
- C语言项目总结-通讯录
- 顺时针打印矩阵
- 关于碰到开机自动弹出图片查看器和右下角弹游戏各种广告的解决方法