排序算法005-插入排序

一、什么是插入排序?Java 实现:class InsertSort{     private static void insertSort(Integer[] data) {           &
阅读全文

排序算法004-归并排序

一、什么是归并排序?(稳定、O(nlogn))归并排序 (merge sort) 是一类与插入排序、交换排序、选择排序不同的另一种排序方法。归并的含义是将两个或两个以上的有序表合并成一个新的有序表。1、一趟归并需要将数组 a[]中相邻的长度为h的有序序列进行两两归并.并将结果放到temp[]中,这需要将待排序列中的所有记录扫描一遍,因此耗费O(n),而又完全二叉树的深度可知,整个归并排序
阅读全文

排序算法003-选择排序

首先要知道选择排序包括:简单选择排序,堆排序选择排序的基本思想每一趟从待排序的数据中选出最小元素,顺序放在已排好序的数据最后,直到全部数据排序完毕。
阅读全文

排序算法002-冒泡排序

冒泡排序的基本思想:每次比较两个相邻元素,如果他们的顺序错误就把它们交换过来。时间复杂度:由于每个数字都要和所有相邻的数字进行比较,即其核心部分就是双重嵌套循环,所以不难想到为O(N2),这是一个非常高的时间复杂度代码实现#include <stdio.h>   int main(int argc, const c
阅读全文

排序算法001-快速排序

首先我们要知道,快速排序是对冒泡排序的改进,通常情况下快速排序的速度最快,但是由于使用了递归,所以会占用大量内存。算法思想:从数组里挑选一个数,将其他大于这个数的数放在它的右边(假设从小到大排列),小于他的放在左边。这样的话数组被分成左右俩数组,然后重复对子数组进行上述操作。快速排序步骤:1)排序开始的时候:i=0(数组起始位置),j=N-1(数组结束位置);2)以第一个数组元素作为关键数据,ke
阅读全文

排序算法010-桶排序

在《啊哈算法》这本书里看到了一个解决排列一串数字的方法,是桶排序的一个简化版本,仔细想一下真的是特别方便,而且涉及不到数字的比较。
阅读全文

算法笔记 14_数字三角形问题

一、问题描述二、算法思想自顶向下不断向下压缩相加三角形(数组),最后压缩成一排,取最大值(详见注释)。三、代码如下 (C++)//#include "stdafx.h" #include <iostream>   using namespace std;  #define MA
阅读全文

算法笔记 13_矩阵连乘问题

一、问题描述给定 n 个矩阵:A1,A2,…,An,其中 Ai 与 Ai+1 是可乘的(也就是说Aiy=Ai+1x),i=1,2,…,n-1。确定计算矩阵连乘积的次序,使得依照此次序来计算矩阵连乘积所需要的数乘次数最少(输入数据为矩阵个数和每个矩阵规模,输出结果为计算矩阵连乘积的计算次序和最少数乘次数)。 如下例子: 矩阵连乘积 A1A2A3A4 有 5 种不同的完全加括号的方
阅读全文

算法笔记 12_最长公共子序列问题(动态规划算法)

一、问题描述:   最长公共子序列问题: 给定两个序列 X = {x1, x2,x3,....,xm} 和 Y = {y1,y2,y3,....,yn} ,找出 X 和 Y 的最长公共子序列。二、动态规划算法思想: &n
阅读全文

算法笔记 11_旅行售货员问题

问题重述:   售货员要到若干城市去推销商品,已知各城市之间的路程(或旅费)。他要选定一条从驻地出发,经过每个城市一次,最后回到驻地的路线,使总的路程(或总旅费)最小。    路线是一个带权图。图中各边的费用(权)为正数。图的一条周游路线是包括V中的每个顶点在内的一条回路。周游路线的费用是这条路线上所有边的费用之和。  &n
阅读全文
首页 123 末页 共 30 条记录