C++
阿楠不会敲代码
这个作者很懒,什么都没留下…
展开
-
快速排序的基本思路
快速排序快速排序的基本思路是: 通过一趟排序将待记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个有序的目的。int Partiton(SqList *L, int low, int high){ // 将每个枢轴值放入其排序后应该所在的位置 int pivotkey = L->Array[low]; // 先将每个表的low作为枢轴值 while (low < high) {原创 2021-01-31 20:40:47 · 1336 阅读 · 0 评论 -
归并排序的基本思想
归并排序归并,就是把元素合并在一起,在这里我们主要是通过把数据元素分开,当数组元素细化后将它在合并起来。在归并算法中,主要用到了分治和合并的两种思想。分治:将数组元素细化,分成n多个单个元素序列。合并:一步一步将分治的数组元素合并起来,合并的同时进行顺序排序。//归并排序void Merge(int TR2[], int TR1[], int i, int m, int n){ // 合并两个数组 int j, k, l; for (j = m + 1, k = i; i原创 2021-01-30 22:02:44 · 2734 阅读 · 0 评论 -
堆排序的基本思路
堆排序虽然树还没弄懂,但是这个算法中用到的完全二叉树还是很容易懂的。我们将堆排序的算法分为两部分,一部分是排序算法,另一部分是构造堆的算法。void HeapAdjust(SqList* L, int s, int m){ // 调整堆内元素排序位置,将双亲结点和孩子结点中元素值最大的赋值给根结点 int temp, j; temp = L->Array[s]; for (j = 2 * s; j <= m; j *= 2) { // 沿较大孩子结原创 2021-01-29 15:57:39 · 272 阅读 · 0 评论 -
希尔排序的基本思想
希尔排序在我看来,是将数组序列从大化中,中化小的一种排序方式,每一个化简的过程也是利用了直接插入排序,将数组基本排序,对于基本排序也就是大致有一个从小到大的顺序,在对这个基本的序列进行排序,在基本的序列里有的序列可能已经按照顺序排好,所以会省去一些步骤,以此来对排序算法进行优化。void Shell_Sort(SqList* L){ int i, j; int increment = L->length; do { increment = incr原创 2021-01-29 12:02:01 · 1011 阅读 · 4 评论 -
直接插入排序的基本思想
关于直接插入排序,在我看来它不过是对简单的选择排序进行了优化,相当于一个动态的选择排序,不过这里边的哨兵用处特别大。void Insert_Sort(SqList* L) { int i, j; for (i = 2; i <= L->length; i++) { if (L->Array[i] < L->Array[i - 1]) { //需将L->Array[i]插入有序子表原创 2021-01-28 13:44:18 · 774 阅读 · 0 评论 -
冒泡排序的基本思路
冒泡排序基本冒泡排序:就是将数组中的元素两两进行对比,比出大小,按顺序进行交换,没有比出则不进行任何操作。这个算法是比较简单暴力的,但是不推荐使用,因为这种算法是时间消耗最多,同时也做了很多无用功。void BubbleSort_first(SqList* L) { for (int i = 1; i <= L->length; i++) { //Array[0]用作存储数组长度,所以从i = 1开始 for (int j = 1; j <原创 2021-01-27 17:54:32 · 1937 阅读 · 0 评论 -
C++面向对象程序设计
C++面向对象程序设计1. 指针1.1 关于指针、空指针、野指针的区别空指针:规定其指向为NULL,用来开辟一个指针时为指明方向。野指针:在内存中随意开辟一个内存空间来让指针指向,但指针不可以访问地址。int main() { int a = 10; int* p = NULL; //初始化指针指向 int* p1 = (int*)malloc(sizeof(int)); //系统为指针选择某一内存位置 int* p2 = (int*)0x1110; p = &a; c原创 2020-12-18 09:58:41 · 2704 阅读 · 0 评论