随笔分类 - 数据结构/算法
摘要:快速排序快速排序和归并排序一样,都来自分治法的思想,由于快速排序在时间复杂度为O(n*logn)的几种排序算法中效率较高,因此被经常采用。快速排序的思想在实际的生活中经常遇到:有一堆面额不等的钞票,要把它们从小到大排序,首先可以找出一张作为基准,比它面额小的都放在左边,比它面额大的都放在右边,这时再...
阅读全文
摘要:归并排序归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。代码:public class S...
阅读全文
摘要:壳排序(希尔排序)shell排序的思想是根据步长由长到短分组,进行排序,直到步长为1为止,属于插入排序的一种。shell排序是对插入排序的一个改装,它每次排序把序列的元素按照某个增量分成几个子序列,对这几个子序列进行插入排序,然后不断的缩小增量扩大每个子序列的元素数量,直到增量为一的时候子序列就和原...
阅读全文
摘要:插入排序插入排序的思想有点像打扑克抓牌的时候,我们插入扑克牌的做法。想象一下,抓牌时,我们都是把抓到的牌按顺序放在手中。因此每抓一张新牌,我们都将其插入到已有的排好序的手牌当中,注意体会刚才的那句话。也就是说,插入排序的思想是,将新来的元素按顺序放入一个已有的有序序列当中。举个例子可能更容易理解一些...
阅读全文
摘要:选择排序思想选择排序的思想非常直接,从所有序列中先找到最小的,然后放到第一个位置。之后再看剩余元素中最小的,放到第二个位置……以此类推,就可以完成整个的排序工作了。可以很清楚的发现,选择排序是固定位置,找元素。相比于插入排序的固定元素找位置,是两种思维方式。代码:[java]view plainco...
阅读全文
摘要:简介不同的排序算法适用于不同的实际环境中,主要考虑以下的因素:1.时间复杂度(算法执行时间)2.空间复杂度(存储空间)3.代码量对于数据量比较小的排序,1,2所产生的差别不大,主要考虑3;对于数据量较大的排序,主要考虑1。10种排序算法:1.冒泡排序————Bubble,相邻交换2.选择排序———每...
阅读全文
摘要:任意进制间的转换(2~36进制),用数组存储要转换的数字,结果返回整型的十进制数。/************************************************************************//* a是要转换的数,bit是原本的进制(2~36) ...
阅读全文
摘要:Problem DescriptionMany geometry(几何)problems were designed in the ACM/ICPC. And now, I also prepare a geometry problem for this final exam. According ...
阅读全文
摘要:千辛万苦找到了大数(高精度)加减乘除取模运算的算法,有的地方还需要再消化消化,代码先贴出来~include #include using namespace std;inline int compare(string str1, string str2){ if(str1.size() >...
阅读全文
摘要:先预设值一段数组,再输入一个数,用二分查找法找到这个数再数组中的位置,并输出位置,通常使用二分法查找。下面是示例代码,查找二十个数中的某数并输出位置。#include #include int Search(int *a,int key){//在顺序表中折半查找key的元素,若找到返回元素下标,否则...
阅读全文