C++数组进阶——一维数组的应用及起泡法思路

原创 2012年03月30日 15:35:17

C++复习——数组

一、         相关概念

1、  具有相同属性有内在联系的一批数据看作一个有机的整体,称为数组

2、  数组中用序号或下表来区分各个数据,用来表示该数据在数中的序号,称为下标(数组元素的标识符);数组中的数据称为数组元素

3、  引用数组的好处:引入数组就不需要在程序中定义大量的变量,大大减少程序中变量的数量,使程序精炼,而且数组含义清楚,使用方便,明确地反映了数据间的联系。许多好的算法都与数组有关。熟练地利用数组,可以大大地提高编程和解题的效率,加强了程序的可读性。

二、         一维数组的定义和引用

1、  定义格式:

 类型标识符  数组名[常量表达式]

  例如:inta[10]

说明:数组名定名规则和变量名相同,遵循标识符定名规则。

用方括号括起来的常量表达式表示下标值。

2、  常量表达式的值表示元素的个数,即数组长度。下标从0开始。

3、  常量表达式中可以包括常量、常变量和符号常量,但不能包含变量。也就是说C++不允许对数组的大小作动态定义。

4、  数组必须先定义后使用!

5、  数组元素的表示形式:数组名[下标]

6、  一维数组的初始化:

a、  inta[10]={0,1,2,3,4,5,6,7,8,9};

b、  可以只给一部分元素赋值:

int a[10]={0,1,2,3,4}只定义前五个元素,后五个元素默认为0;

c、   在对全部数组元素赋初始值时,可以不指定数组长度:int a[]={1,2,3,4,5};

三、一维数组的应用

1、  起泡法排序:

起泡法的思路是:将相邻两个数比较,将小的调到前头。若有6个数(8,9,5,4,2,0)第一次比较第1和第2(8和9)的大小,如果第1个数大于第2个数,就把第2个数位置交换,第二次将第二和第三个数(9和5)交换……如此共进行5次,得到8,5,4,2,0,9的顺序。可以看到:最大的数9已经沉底,小数上升。

然后对余下的前五个数按上法进行比较,经过四次比较,得到次大的数8。再进行第三趟比较,对余下的四个数进行比较。不难看出,对6个数进行比较交换需要五次才能排好,第一趟两数交换五次,第二趟四次……

  总结:如果有N个数,要进行N-1次比较交换,在第一趟中要进行N-1次两两比较,在第j趟中要进行N-j次两两比较。

试题:设n=10,即数组长度为11,a[0]不用,只用a[1]~a[10],可知需要进行9躺比较交换。

代码如下:

/*

 * example.cpp

 *

 *  Created on: 2012-3-30

 *      Author: yangbo_hbzjk

 */


#include <iostream>

using namespace std;


int main()

{

int a[11];

int i,j,t;

cout<<"input 10 numbers:"<<endl;

for(i=1;i<11;i++)      //         输入a[1]~a[10]

{

cin>>a[i];

cout<<endl;

for(j=1;j<=9;j++)

{

for(i=1;i<=10-j;i++)

{

if(a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

}

}

}

}

cout<<"the sorted numbers:"<<endl;

for(i=1;i<11;i++)

{

cout<<a[i]<<"";

cout<<endl;

return 0;

}



ACM集训——POJ2352---一维树状数组的应用

树状数组(Binary Indexed Tree(BIT),Fenwick Tree): 树状数组(Binary Indexed Tree(BIT),Fenwick Tree)是一个查询和修改复...

C++一维数组和指针的关系总结

  • 2014年11月01日 17:18
  • 41KB
  • 下载

一维数组的应用

  • 2014年09月18日 00:13
  • 25KB
  • 下载

C程序一维数组最全的12中应用[FOR 初学者]

一维数组最常见的应用: 1.求数组中的最大值; 2.无数组中的最小值; 3.求数组中元素的累加和; 4,求数组中元素的平均值; 5.查询一个数是否在数组中包含; 6.检索某个数在数组中第一...

一维数组的开辟 赋值 应用

package 第十五个工程; import java.util.Scanner; public class Domo15 { public static void main(String arg...

java 数组的应用(一维)

一位数组的应用,包括数组复制,数组局部复制,数组长度,数组排序,在数组里边查询某个值,在数组里边局部查询某个值: talk is cheaper,show me the code: package...
  • z8110
  • z8110
  • 2016年05月20日 13:54
  • 209

VBA数组进阶

  • 2011年10月13日 08:51
  • 201KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++数组进阶——一维数组的应用及起泡法思路
举报原因:
原因补充:

(最多只允许输入30个字)