C
文章平均质量分 52
爬比我。
这个作者很懒,什么都没留下…
展开
-
指针函数与函数指针
附上之前指针数组与数组指针的博客:https://blog.csdn.net/qq_41078889/article/details/102533019之前我们了解过数组指针和指针数组,那么现在对于指针函数与函数指针应该很容易区分。对于int * Fun();和int (*Fun)();我们一眼可以看出来第一个是指针函数第二个是函数指针。1.指针函数与函数指针指针函数:一个函数返回...原创 2019-10-14 21:33:28 · 630 阅读 · 0 评论 -
数组指针与指针数组
首先我们要知道什么是数组指针、指针数组,并且如何去区分它们。int *p1[10];int (*p2)[10];什么区别?那个是数组指针?那个是指针数组?指针数组:就是一个数组,数组的每个元素就是一个指针。定义 int *p1[10];[]优先级高,先与p结合成为一个数组,再由int说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1是错误的,这样赋值也是错...原创 2019-10-13 15:43:34 · 905 阅读 · 0 评论 -
归并排序
归并排序(合并排序)是将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序若将两个有序表合并成一个有序表,称为二路归并。归并操作(合并),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。给定一个初始数列:6,202,100,301,38,8,1第一次归并后:{6 202},{100 301},{8.38},{1}第二次归并后:{6 100 ...原创 2018-12-05 12:22:54 · 468 阅读 · 0 评论 -
堆排序—C语言
堆排序(堆排序)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。利用可以数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值。在数组的非降序排序中,需要使用的就是大根堆,因为根据大根堆的要求可知,最大的值一定在堆顶。根大堆的英文堆的两种形式之一。根结点(亦称为堆顶)的关键字是堆里所有结点关键字中最大者,称...原创 2018-12-05 12:21:45 · 389 阅读 · 0 评论 -
快速排序—C语言
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1962年提出。快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。固定选取基准法例如:对 49 ...原创 2018-11-27 19:44:38 · 571 阅读 · 0 评论 -
希尔排序(shell)—C语言
希尔排序(shell sort)又叫做缩小增量排序,由DL.Shell至1959提出命名。Shell排序的基本思想是:先将整个待排元素序列切割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。有一串数字为 49,38,65,97,76,13,27,49,55,4。...原创 2018-11-20 22:55:46 · 677 阅读 · 0 评论 -
直接插入排序—C语言
直接插入排序(Insert Sort)稳定的一种排序直接插入排序的思想:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 直接插入排序是由两层嵌套循环组成的。外层循...原创 2018-11-20 19:22:40 · 427 阅读 · 0 评论 -
选择排序—C语言
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。选择排序的原理:对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的...原创 2018-11-18 12:05:09 · 648 阅读 · 0 评论 -
冒泡排序—C语言
冒泡排序(Bubble Sort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后至此第一趟结束,将最大的数放到了最后在第二趟:。仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),...原创 2018-11-18 11:49:24 · 2182 阅读 · 6 评论 -
结构体内存对齐
关于结构体内存对齐的问题,最直观的体现是在计算结构体大小的时候。在32位平台下,vs的默认对齐数是4字节,但是在64位平台下,vs的默认对齐数是8字节。接下来我们通过一个简单的例子来说明结构体内存对齐的问题。#include<stdio.h>int main(){ struct A { char a; char b; double c; }s1; ...原创 2019-10-12 19:54:20 · 611 阅读 · 0 评论 -
指针的左值与右值
首先我们看一下什么是左值、右值。(1)左值就是一个可被存储的单元,右值就是一个可被读取的数据。(2)左值必须是一个被明确了的内存存储单元,可以用来被赋值;右值必须是一个能被读出来的确确实实的值,这个值可以是数据,可以是指针,可以是结构,反正只要能被读出来的,都可以定义为右值。接下来我们先看如下代码:int a = 112, b = 1;int *d = &a;......原创 2019-09-21 11:02:07 · 2943 阅读 · 0 评论