c++ 一维数组(包括排序与例题)

一、一维数组的知识

####  扩:setw(输出的宽度)  C++ 中的格式化函数,用于指定输出流的宽度。不能用于输入流 
#### 一维数组:一组相同类型的变量
  ## 格式:类型标识符 数组名[常量表达式];     eg: int a[5];
               -- 类型标识符(基本数据类型/结构体等构造类型) 
  ## 引用数组格式:数组名[下标]   
     eg: h[5]、h[i*2+1]等。
     注意1:下标只能为整型常量或整型表达式 √√√
           -- 整型表达式而不是整形变量  √√√
     注意二:下标值必须在数组定义的下标范围内    
     注意三:不能一次引用整个数组,只能逐个引用数组的单个元素。
     注意四:单输出数组名,返回数组的首地址 
  ## sizeof会返回数据类型的(字节)大小  int = 4字节 =(4*8)32位  1字节 = 1字符 = 1/2汉字 √√√ 
    eg:int a[3]={1,2,3};
       int b=12;
       cout << sizeof(a) << endl;
       cout << sizeof(b) << endl;
  ## system("pause")     -- 暂停程序的执行(暂停命令行窗口)  目的:为了查看程序的结果/错误信息 
  ## 数组在计算机内存单元中是连续存储的 
  ## 数组的插入思路:从最后开始往后移动直到插入后的位置逐步加一,然后开始插入x   √√√ 
  ## 数组的删除思路:从删除的位置之后开始往前i减一(直接进行覆盖,不用再删除)   √√√ 
  ## 数组的查找x:
     # 查找操作的结果:可能是一个没找到、找到一个或者找到很多个
     # 常见的查找:顺序查找和二分查找 
     # 顺序查找:按照从前往后的顺序,将数组中的元素依次与要查找的数x进行比较。
     # 二分查找(折半查找):√√√ 
        要求:数据是递增或递减排序的。数据是有序的。
        left  right  mid=(left+right)/2  循环:mid跟查找x比较,找到输出位置;
        若没找到,若在左面,right=mid-1,若在右面,left=mid+1 
        优点:比较次数少、查找速度快。
  ## 数组的排序问题:通过数组中的元素比较和交换来实现的,关键是数组下标的分析   √√√ 
   # 选择排序:从小到大:假设一个最小的,依次每个与最小的进行比较(获取最小的) 放在第一个位置(依次放到第二个位置.... )
   # 冒泡排序:从小到大:每一轮依次两两进行比较,大的交换到后面(依次第二后,第三后...) 
   # 插入排序: 
     思想:把所有待排序元素分成前后两段,前一段是已经排好序的,后一段是待排序的。
        每一趟都是把后一段的第一个数“插入”到前一段的某一个位置,保证前一段仍然是有序的。
        开始时,第 1 个数作为前一段肯定是有序的;第一趟,把第 2 个数插入进去,保证前 2个数有序;
        第二趟,把第 3 个数插入进去,保证前 3 个数有;……第 n-1 趟,把第 n 个数插入进去,保证 n 个数都有序。                          
二、数组的整体赋值
整体赋值(统一赋值):给数组按字节整体赋值,按元素整体赋值: 
## fill(d,d+5,8);   //给d数组的前5个元素赋值为8 
## memset(c,0,5);   //给数组前5个字节都赋值为 0 
## memset(b,1,sizeof(b));   //将b数组所有元素均赋值,按照sizeof(int) = 4字节 = 每一字节按8位计算2^0+2^8+2^16+2^24  
## 示例: 
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(){

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值