算法
Elinice
这个作者很懒,什么都没留下…
展开
-
判断数字n是否为回文数
判断数字n是否为回文数回文数就是指各位数字左右对称的整数。例如:121,676,94249等。算法的实现就是将数字n“颠倒”一下,构成数字m,判断m与n是否相等。bool symm(unsigned n) { unsigned i = n; unsigned m = 0; while (i>0) { m = m * 10 + i % 10; } return m ==...原创 2019-02-03 13:06:57 · 1316 阅读 · 0 评论 -
力扣第6题:Z 字形变换
问题描述:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换...原创 2019-02-27 01:40:09 · 676 阅读 · 0 评论 -
几大排序算法之冒泡排序(Java实现)
冒泡排序原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个...原创 2019-03-10 17:16:46 · 106 阅读 · 0 评论 -
几大排序算法之直接插入排序(Java实现)
直接插入排序直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。public static void insertionSort(int []ar...原创 2019-03-10 17:48:39 · 147 阅读 · 0 评论 -
几大排序算法之快速排序(Java实现)
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。图片来源递归实现实现:/**工具函数,将比arr[low]小的元素都放到数组左边,比arr[low]打的元素都放...原创 2019-03-10 18:01:19 · 130 阅读 · 0 评论 -
几大排序算法之希尔排序(Java实现)
希尔排序算法希尔排序是希尔(Donald Shell),它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。时间复杂度在,O(nlog n)和O(n^2)之间。思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序在数组中采用跳跃式分组的策略,通过某个增...原创 2019-03-10 18:26:52 · 253 阅读 · 0 评论 -
几大排序算法之归并排序(Java实现)
归并排序归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。1、归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法:设有数列{6,...原创 2019-03-10 18:40:05 · 94 阅读 · 0 评论