三种排序以及二分查找的总结和二维数组的学习

本文概述了四种基本排序算法(插入排序、二分查找、冒泡排序和选择排序),以及一维和二维字符型数组的存储、操作和初始化,以及函数的基本概念,以C语言为例详细讲解了这些关键知识点。
摘要由CSDN通过智能技术生成

1.对于昨天学习的插入排序和二分查找进行一个总结:

1.1插入排序:

插入排序的本质就是为合适的

数字找到合适的位置,也就是说需要在a数组中从a[0]项开始依次提出到变量t中(此时需要一个大循环,用来依次从数组中提出元素)。拿提出的元素和前面那一项比较。小循环:用j(下标的意思)来代表准备放入的位置。条件1:j>0的原因是因为,a[0]项已经是最前面的一项,不能越界。条件2:用t和j的前一项比较(t和j-1,比较),若是t<前一项的话,前一项向后移一位,也就是a[j]=a[j-1],此时准备放入的位置向前移动一项,也就是--j。进入循环,依次比较出t应该在的位置。


1.2二分查找:

二分的本质就是对一个数组进行折半,找到中间值,用中间值去和查找数字x比较,通过判断缩小寻找的区间,再循环进行折半,知道中间值=查找值的时候,找到!此时折半缩小区间的过程就是一个循环。条件:当begin(数组下标为0的位置)<=end(数组中下标为n-1的位置)的时候,说明区间在不断缩小,mid ‘< ’或者‘>’查找值x的时候,通过移动begin和end的位置缩小区间当mid=x的时候,说明找到,循环跳出。但是在查找是若是不存在查找数x,那么就会出现begin<end的情况,此时循环也会停止,所以要在后面加一个条件,当begin<=end 的时候,才说明此时mid才是要找的数字,否则,查找的数字不存在。


1.3冒泡排序:

冒泡排序的本质就是通过一趟一趟的邻间换位,每一趟得出一个最大值,n-1趟能排出所有的序。
大循环就是控制趟数,用j表示,j为n-1趟,最后只剩一位不用比较小循环就是邻里相比,a[i]和a[i+1]相比较,若是前面项比后面大,两项数换位,循环比较,循环的次数每一趟减少一次,跟上面j++联系,最初需要走n-1趟,j++,每次少一趟。得出排序完的数组。


1.4选择排序

选择排序的本质就是将数组中的每一项提出来,跟后面项比较,当后面项小于提出来的项的时候,将后面的项换位到提出的项中。大循环就是控制提出的项,用i表示,到下标为n-1的那一项,但是此时我最后一项不需要比,n-1-1,也就是i<n-1。用提出来的a【i】去和后面的项比较,用j表示比较的项也就是a【j】,j=i+;j++,循环比较,直到j<n(也就是最后一项a【n-1】)。得出排序完的数组。


2.一维字符型数组

字符串的储存方式是按照字符数组的形式(数组特点存储)
puts输出字符串时,不输出'\0'
puts自带一个换行的功能
scanf不能提取出一个带空格的字符串
strcat(目标字符串,源字符串) --- 将源字符串的字符串移动到目标字符串里面

字符串比大小的规则:两个字符串都从a【0】项开始比较,遇到不同的字符时候,比较这两个字符的大小(比较的是ASCII的大小),谁大谁的字符串就大。
注意:识别'\0'的时候,要停止识别。
若结束 :a【i】==b【ixua】==’0‘的时候,说明一样大,若是一者为零,那就说明遇到不同字符,相比较。

int strcmp(const char *s1, const char *s2); 功能:比较两个字符串
strcmp(第一个数组,第二个数组)---- 得出来第一个字符型数组和第二个字符型数组中,比较的那两个字符的差值(ascii),为正前者大,为负后者大。

字符型数组中常用的指令:strlen --获取字符串长度 
                                           strcpy --相当于字符串间 赋值
                                           strcat --拼接字符串 
                                           strcmp --比较字符串


3.二维数组

形式:类型说明符 数组名【常量表达式】【常量表达式】
二维数组中:【常量表达式】【常量表达式】就是 行 (row) 和  列 (col)

二维数组的本质:一维,因为只有行和列,没有时间,空间,没有xyz轴,也就是说每一个元素都是一维数组。a[0][0]我理解为数组a中下标为零项中的第[0]项。

二维数组的初始化:
1.int [2][2]={1,2,3,4};    ------  初始化,全部赋值
2.int [2][2]={{1,2},{3,4}};  -----初始化,按行全部赋值
3.int [2][2]={{1},{3}} ------   按行的初始化,没复制的默认为0

注意int a[][4]={1,2,3,4}; 二维数组语法角度 ---行数可以省略 列数不能省略 , 省略的时候,必须给值 (计算机需要计算得出需要给你开拓的空间)


4.二维字符型数组

形式:char 数组名【n】【m】
含义:定义了n行的字符串,在m里面
在二维数组中,gets(a[0])和一维数组 gts(a)一样,输出一串字符
 


5.函数的初步认识

函数的定义就是实现函数,是实现某一个功能的

函数的定义:
类型标识符 函数名(形式参数)
{
    声明部分
    语句部分
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值