嵌入式学习记录8

1 . 循环中的排序

排序一般分为升序和降序; C中排序一般指升序;

1.1选择排序:

嵌入式学习记录8_第1张图片

第一个for 为趟数,一共要进行几趟下面的程序;然后定义下面应该拿出第几个位置的数

第二个for为次数,拿出第一个位置;不断与后面的数进行比较,在这个位置放置最小的数;而for的作用可以让这个程序依次比较,且以递增的形式进行下去;直至最后一个;得到这个数组最小的数,放置在a[0]处;后回到第一个for依次拿出后面的位置与后面的数进行比较;

if 则是 让第一个位置的数不断与后面的数进行比较;后面的数小则交换;

最终得到一个升序数组;

1.2冒泡排序:

嵌入式学习记录8_第2张图片

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

第二个for为次数,让所有两两相邻两个数进行比较,

if 则是让相邻两个数中大的放到后面;再回到第二个for让这个放到后面的数与下一个(该数后面的数)再进行比较,依次进行;直到得到一个最大的数,放到最后一个;

而 len-i;的目的是摘出刚刚确定的最大数,让前面剩下的数进行比较;

最终得到一个升序数组;

1.3 插入排序:

嵌入式学习记录8_第3张图片

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

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

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

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

1.4查找:

嵌入式学习记录8_第4张图片

注意对数组进行查找时数组必须有序;

此处默认升序;

while 中 对  若 begin <=  end 则一直进行下面的程序;

进入下面程序,先拿begin与end中间值(mid)   与   a[n] 进行比较

                            小则说明a[n]再begin与mid 之间;再令end=mid-1;再比较begin与end进行循环直到a[n] = mid;

                           大则说明a[n]再mid与end 之间 ;  再令begin=mid+1;再比较begin与end进行循环直到a[n] = mid;

                           否则 则说明 a[n] 与 mid 相等,则直接跳出循环;

最终再拿得到的a[n]看 begin <=  end 若真则说明是走循环得到的a[n],假则说明此数组不是升序;输出no;

2.字符数组

 主要作用 : 处理字符串数据       

'\0' 是字符串的结束标志 ;

注意:

 1.字符串 -- 更关注的是字符串整体,而不是单个字符 

 2.字符串的结束标志 比较重要 ,表示字符串结束 

 3.处理字符串时,常常使用结束标志作为判断 

2.1 puts

功能:    输出字符串

特点:    输出时,自动换行

一般为 puts(字符串名称,如s )  s[10]="hello";

2.2 gets

功能:      输入字符串

2.3 strcpy

功能:      实现字符串拷贝 

你可能感兴趣的:(学习,数据结构)