数据结构和算法
追随圣光吧
本人还在学习中,求大佬们多多帮忙哈
展开
-
排序算法之快速排序
前面谈论了简单排序里面的冒泡,选择还有插入排序,就我个人而言,觉得还是挺简单的,比较容易理解,可能也就只有插入排序稍微有点复杂,多敲几遍就ok啦!今天来谈论一下快速排序法吧。首先这个快速排序法的发明人是C. A. R. Hoare在1962年提出来的,基本的思想是“分治法”。那么它的主要步骤如下:1、设定一个基准数,一般我喜欢设定左边第一个数为基准数。例如left = 0;tmp =原创 2017-06-08 15:47:23 · 215 阅读 · 0 评论 -
排序算法之插入排序
下面来谈论一下插入排序。顾名思义,这个一看就是通过插入数字来完成排序的算法啦;废话不多说,下面是实现代码:1、插入排序:当插入第i(i≥1)个对象时,前面的数据已经保证都已经排好序了,这个时候把通过把a[i]与前面的a[i - 1], a[i - 2]...比较,然后将a[i]插入到一个正确的位置。原来位置上的数据挨个后移。这样就实现了插入排序。2、插入排序也是一种原创 2017-06-07 18:34:13 · 190 阅读 · 0 评论 -
排序算法之冒泡排序
理解了选择排序,接下来理解冒泡排序,嘿嘿。。。什么是冒泡排序呢,这个名字很形象,每次比较相邻的两个元素,如果是升序排序,那么就把较小的数放到前面,较大的数放在后面,完成一轮,然后循环往复,这样较小的数就会像“冒泡”一样跑到最前面。废话不多说,下面是代码:1、冒泡排序是稳定排序,因为如果遇到相同的数字,是不会交换的。2、冒泡排序也属于比较排序。3、冒泡排序的时间复杂度是O原创 2017-06-07 17:48:13 · 1579 阅读 · 0 评论 -
排序算法之选择排序
排序的算法有不少,先来说说选择排序。选择排序,看这个名字就知道这种排序方法一定与选择有关,当有一个数组存在时,并且这个数组就是需要我们进行排序的数组,例如定义了一个整形数组array[10] = {2,1,4,8,7,14,23,3,25,23};这里谈论一下选择排序如何对该数组进行升序排序:第一轮遍历该数组的时候找到里面最小的一个元素下标我们假设为min_index,然后将找到的这个mi原创 2017-06-07 17:23:56 · 211 阅读 · 0 评论 -
通用树的双亲表示法(代码演示))
//通用树双亲表示法头文件#ifndef __TREE_H__#define __TREE_H__#include <stdio.h>#include <stdlib.h>#include <string.h>#define FALSE 0#define TRUE 1struct _treenode;typedef struct _childnode //孩子链表内孩子结点{原创 2017-08-01 11:43:34 · 808 阅读 · 0 评论 -
10种常用排序(代码版)
#include <iostream>#include <assert.h>using namespace std;template <class T2>void Swap(T2 &a, T2 &b){ T2 temp = a; a = b; b = temp;}template <class T1>void Print(T1 *a, int n){ a原创 2017-09-12 09:45:13 · 409 阅读 · 0 评论