计算机IT
计算机IT技术
Yunpentium
谨以此博客记录自己的学习历程和分享知识——共同学习、共同进步——千里之行、始于足下!
展开
-
排序算法(1)——选择排序
[转载] 百度百科1、拟解决问题输入n个数的序列<a1,a2,a3,...,an>。输出原序列的一个重排<a1*,a2*,a3*,...,an*>;,使得a1*<=a2*<=a3*<=...<=an*2、排序算法的思想1)、对比数组中前一个元素跟后一个元素的大小,如果后面的元素比前面的元素小则用一个变量k来记住他的位置,接着第二次比较,前面“后一个元素”现变成了“前一个元素”,继续跟他的“后一转载 2017-03-05 17:08:48 · 342 阅读 · 0 评论 -
斐波那契数列的矩阵求法,效率O(lgn)
按照上述思路,写出下边代码,可以正常运行。#include "stdafx.h"#include <iostream>using namespace std;void matix_power(int a[][2]);void matrix_multiply(int a[][2]);void Fibonacci(int a[][2], int ExpN);//求Fibonacci的入口in原创 2017-02-27 13:12:53 · 935 阅读 · 0 评论 -
排序算法(7)——归并排序
[转载] 百度百科 1、归并排序的思想归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,是分治法(Divide and Conquer)的一个非常典型的应用。 二路归并的核心思想是 1)、将一个无序数组“平均”分成两个无序子数组; 2)、将这两个无序子数组各自按顺序排列后,合并成 一个顺序序列; 递归的对每个子序列执行上述均分和合并排序操作。[举例说明] 需要对数列{转载 2017-03-11 21:14:45 · 268 阅读 · 0 评论 -
从1到n整数中1出现的次数(比如121这一个整数里就含有两个1)
1、通过举例来描述问题【用例1】5 答案:1。因为只有1中含有一个。【用例2】10 答案:2。因为只有1和10中各含有一个。【用例3】55 答案:16。因为10~19中的十位各有一个;01、11、21、31、41、51的个位各有一个。 【用例4】99 答案:20。因为10~19中的十位各有一个;01、11、21、31、41、51..原创 2017-03-20 21:21:21 · 597 阅读 · 0 评论 -
排序算法(5)——插入排序
[转载] 《算法导论》 [转载] http://blog.sina.com.cn/s/blog_6d677b680100s3hh.html1、插入排序的思想 2、插入排序的实现void insert_sort(int *a,int n){ int i,j,key; for(i=1;i<n;i++)//控制需要插入的元素 { key=a[i]; //k转载 2017-03-06 14:17:19 · 220 阅读 · 0 评论 -
排序算法(2)——堆排序
1、堆的定义1)、(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。树上的每一个节点对应数组中的一个元素。除最底层(叶子层)外其它层都是满的。 2)、规定树的根结点是A[1],这样给定一个节点的下标i,我们可以 很容易计算它的父节点、左孩子、右孩子的下标。 PARENT(i)=i/2; LEFT(i)=2*i; RIGHT(i)=2*i+1;3)、(二叉)堆可分为两转载 2017-03-06 00:46:55 · 205 阅读 · 0 评论 -
排序算法(3)——冒泡排序
1、冒泡排序的思想依次比较相邻的两个数,将大数放在前面,小数放在后面。 具体的步骤: 首先从数列开头比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续完成第一趟,最小数将沉到底部。 重复以上过程直至最终完成排序。2、冒泡排序的实现void bubble_sort(int *a, int size){ int i, j, t;转载 2017-03-06 11:18:32 · 420 阅读 · 0 评论 -
排序算法(4)——快速排序
1、快速排序的思想通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2、快速排序的实现void swap(int *data1, int *data2){ int tmp; tmp = *data1; *data1 = *d转载 2017-03-06 13:32:20 · 281 阅读 · 0 评论 -
运算符后序计算
[用例1] 23+5- 结果是0 [用例2] 235*+ 结果是17 [用例3] 235*+2- 结果是-15#include "stdafx.h"#include <iostream>#include <string>#include <stack>using namespace std;//字符转整数int ch2int(char ch){ int value;原创 2017-03-18 00:30:10 · 500 阅读 · 0 评论 -
排序算法(6)——基数排序
[转载] 《算法导论》 [转载] http://www.cppblog.com/shongbee2/archive/2009/04/24/80992.html1、基数排序的思想如下图所示1)、基数排序是从最低位开始的。如果从最高位先排序,次高位排序必须是在前者的基础上,不能打乱了最高位已排好的顺序,只能对最高位相同的次高位进行排序。[例如] 一个无序数列{655 392 694 436 29 8转载 2017-03-08 15:49:53 · 495 阅读 · 0 评论