算法
_G_T
小小码农
展开
-
冒泡排序
冒泡排序是排序算法中最简单,最基本的一种。冒泡排序的思路是交换排序,通过相邻数据交换的来达到排序的目的。实现过程冒泡排序算法通过多次比较和交换来实现排序,其排序流程如下通过对数组中的各数据,依次比较相邻的两个元素的大小。 如果前面的数据大于后面的数据,则交换这两个元素。经过一轮的多次比较排序之后,就可以把最小的数据排好。 再用同样的方法把剩下的数据进行逐个比较,最后便可安装从小到达...原创 2019-04-04 16:58:20 · 113 阅读 · 0 评论 -
折半查找(二分查找)
折半查找又称为二分查找,其要求数据序列呈线性结构,也就是经过排序的。这般查找可以明显地提高查询效率。其算法的操作步骤如下:实现过程首先需要设定三个变量lownum、midnum、highnum,分别保存数组的起始、中间和结束的序号。接着进行如下判断:如果序号为midnum的数组元素的值与x相等,则表示查找到了数据,返回midnum。 如果x<a[midnum],则表示要查找的元...原创 2019-04-04 22:18:48 · 621 阅读 · 0 评论 -
排序算法概要
排序是将一组数据按照一定的规则进行排列的,一般按照递增或递减的顺序来进行排列。排序算法是一种最基本算法。排序虽然看似是一个很简单的问题,但是在实际的应用场合往往面临一些困难。这是因为实际应用中的数据量往往很庞大,这样算法的效率和排序的速度就是一个很大的问题,我们往往需要寻求一种高效的排序算法,因此便演变出了多种排序算法。 最基本的排序算法包括:交换排序、选择排序、...原创 2019-04-04 18:21:44 · 226 阅读 · 0 评论 -
归并排序
转自博客园:https://www.cnblogs.com/chengxiao/p/6194356.html基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。...原创 2019-04-04 18:05:43 · 233 阅读 · 0 评论 -
堆排序
堆排序是基于选择排序思想的,其利用堆结构和二叉树的一些性质来完成数据的排序。实现过程摘自:博客园https://www.cnblogs.com/chengxiao/p/6129630.html什么是堆?堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结...原创 2019-04-04 18:00:40 · 272 阅读 · 0 评论 -
快速排序
快速排序和冒泡排序算法类型,都是基于交换排序思想。快速排序对冒泡排序算法进行了改进,从而具有更高的执行效率实现过程快速排序通过多次比较和交换来实现排序,其排序流程如下首先设定一个分界值,通过该分界值将数组分成左右两部分 将大于等于分界值的数据集中到数组右边,小于分界值的数据集中到数组左边,此时,左边部分中各元素都小于等于分界值,而右边部分中各元素都大于等于分界值。 然后,左边和右边...原创 2019-04-04 17:51:05 · 175 阅读 · 0 评论 -
Shell排序
Shell排序严格来说是基于插入排序思想,其又称为希尔排序或缩小增量排序,在对大量数据需要进行排序时,是不错的选择。实现过程将n个元素的数组分成n/2个数字序列,第1个数据和第n/2+1个数据为一对,第2个数据和第n/2+2个数据为一对。。。 一次循环使每一个序列对排好序 然后再变为n/4个序列,再次排序 不断重复上述过程,随着序列减少最后变为一个,也就完成了整个排序在进行插入排序...原创 2019-04-04 17:34:00 · 196 阅读 · 0 评论 -
插入排序
插入排序通过对未排序的数据执行逐个插入至合适位置而完成排序工作。插入排序的思路比较简单,使用比较多实现过程首先对数组的前两个元素进行大小的比较 接着将第三数据与排序好的两个数据比较,将第三个数据插入到合适的位置 然后,将第四个元素插入到已排好序的前三个元素中 不断重复前面的过程,知道把最后一个数据插入到合适的位置插入排序在对N个数据进行排序时,无论是否有序,都需要进行N-1步的中间...原创 2019-04-04 17:17:35 · 130 阅读 · 0 评论 -
选择排序
选择排序是比较简单的排序算法,思路也比较直观。选择排序算法在每一步中选取最小值来重新排列,从而达到排序的目的。实现过程选择排序算法通过选择和交换来实现排序,其排序流程如下从原始数组中选取最小的1个数据,将其和位于数组起始位置的元素进行交换。 接着从剩下的n-1个元素中依次选择最小的元素,将其和位于数组第2个位置的元素进行交换。 然后不断的重复,知道最后两个数据交换完成。至此,便完成...原创 2019-04-04 17:08:59 · 109 阅读 · 0 评论 -
八皇后问题(递归回溯求解)
该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果,如下是一种:本算法的思路是按行来规定皇后位置,第一行放置一个皇后,第二行放置一个皇后, 第N行也...原创 2019-04-08 15:25:17 · 411 阅读 · 0 评论