学习日志以及个人总结第八天

插入排序
思想:(在有序数列中)找一个合适的位置,插入
  
 总结:
 数组概念
 数组定义
 数组给值
    初始化
    赋值
    输入
算法
    a.找一个数
    b.求极值
    c.逆序
    d.排序
        选择
        插入
        冒泡
    e.变长数组   ※※
            int n = 10;
            scanf("%d",&n);
            int a[n]; //不能初始化
-----------------------------------------------
查找:
二分查找(折半查找)
前提:
    数据必然有序
思想:
    
一维字符型数组:
字符数据:
unsigned char s[10];
unsigned char s[10] = {'h','e','l','l','o'}; //数组考虑

最主要: "english" //字符串常量
·                   //存储时,是按照字符数组的形式存储
   字符数组:主要作用 是处理字符串
    
"hello" -->unsigned char s[10] ={'h','e','l','l','o','\0'};
     '\0'//代表结束标志 
     字符串一定需要'\0'结束标志
     有'\0'字符串
     无 则叫做字符数组
pay attention to:
1.字符串 --更加注重整体 非单个字符
2.字符串的结束标志 比较重要,表示字符串结束 '\0'
3.处理字符串时,常常使用     

int puts(const char*s);
功能:输出字符串
参数:&s 字符串所在空间的首地址
返回值:
        int 成功》0
            失败-1
            
char *gets(char*s);
功能:输入字符串
参数:&s 存放字符串一块内存空间
返回值:表示的是存储字符串那块空间首地址

char s[10];
//h e l l o '\0' x x x x

puts(s);//hello

字符串的长度?  //'\0' 前面有效字符的个数
                //h e l l o '\0' //5就是该字符串的长度

C语言中不能整体赋值

     char *strcpy(char *dest, const char *src);
   功能:
        实现字符串拷贝 
   参数:
       @dest  目标字符串 
       @src   源字符串 
    
  返回值: 
      成功 返回的是 dest地址 
      失败 NULL 

对排序进行总结

选择排序

1

​ 选择排序算法是通过遍历数组,选择出数组的最小或最大值,与指定位置交换数据,遍历完整个数组的所有位置就完成排序

  1. 遍历第一趟数组,找出数组的最小值,与第一个数据交换
  2. 遍历第二趟数组,继续找出最小值,与第二个数据交换
  3. 重复上述动作,遍历完数组就得到一个有序数组

冒泡排序

​ 对数组进行遍历,每次对相邻两个进行比较大小,若大的数值在前面则交换位置(升序),完成一趟遍历后数组中最大的数值到了数组的末尾位置,再对前面n-1个数值进行相同的遍历,一共完成n-1次遍历就实现了排序完成

  1. 第一趟对0~n-1遍历,依次对比前后的大小,若是不满足前小后大就交换,此时最大的数就被挪到了最后一个位置
  2. 0~n-2遍历,继续比较前后大小,此时前n-2个数中最大的数就到了倒数第二个位置
  3. 重复上述动作继续遍历,每一次都将最大的数向后挤,直到遍历完毕排序成功

插入排序(军训排队大的站前面)

第一个for 为趟数,一共要进行几趟下面的程序;

中间让 t=a[j]    i = j;目的是当下面进行比较时,可以让a[j]保留下最后,再赋值给比较后空出来的位置,也就是后面的a[i]=t; 因为 --i ,此时的a[i]刚好为适合t的那个位置;

而while则是让新来的数与里面新数组的末位数进行比较;真则进行里面的交换程序;(比较后最初的a[i]较小,则将与之比较的数放到现在的a[i],而最初的a[i]也就是t,赋值给被比较的数的位置),后若还小则继续往前比较;

而刚开始的i>0,则是让第一个a[0]直接放入新的数组中;

二分查找(要求数据必然是有序的 也就是说一堆乱序先通过 冒泡or选择or插入排序)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值