算法
「已注销」
这个作者很懒,什么都没留下…
展开
-
小白排序之归并排序
转自 白话经典算法系列之五 归并排序的实现 . 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。转载 2016-05-25 19:14:43 · 356 阅读 · 0 评论 -
小白排序之快速排序解读
先贴出Java版本的快速排序。public static void quickSort(int[] array, int l, int r){ if(l<r){ int i = l, j = r, x = array[l]; while(i < j){ while( ix) j--; if(i<j) array[i++] = array[j]原创 2016-05-25 19:48:53 · 648 阅读 · 0 评论 -
Java数组最值,以最小值为例
求一个数组中的最小值,最简单就是遍历。我们有两种方法,去求最小值。方法一public static int min1(int[] array){ int minValue = array[0]; for (int i = 0; i<array.length;i++){ if (array[i]<minValue) minValue = array[i]; }原创 2016-05-13 21:08:12 · 8622 阅读 · 0 评论 -
小白排序之选择排序
算法是小白,所以本着小白精神来写排序,本排序系列均采用正序排序,可以使用一个统一的逆序方法。什么是选择排序呢?从一个包含n个元素的数组A,索引分别为0,1,2...n-1,从中选出最小值Ak,跟在索引为0位置的元素交换,即Ak与A0交换位置,然后在剩下的n-1个元素中选出其中的最小值Ai,跟在索引为1位置的元素交换,即Ai与A1交换位置,直到元素只剩下一个为止。(PS.感觉好通俗)publ原创 2016-05-13 20:20:09 · 676 阅读 · 0 评论 -
小白排序之插入排序
插入排序,何谓插入排序呢?即我假定现在的数据已经排好,我只需要将新数据排进合适的位置即可。详细见下文。首先,我拿到一个包含n个元素的数组,索引分别为0,1,2,...n-1。我首先假定数组的第一个元素以及排好顺序,这是显然的。然后我将数组的第二个元素与第一个元素进行排序,这很简单吧。于是我们得到了一个排好序的二元子数组。再然后,我们拿出第三个元素,插入到排好序的二元数组中,怎么插入呢?无非就是原创 2016-05-14 14:48:04 · 532 阅读 · 0 评论 -
小白排序指冒泡排序
何为冒泡?即轻的上浮。在这里表现为小的数向前靠拢,大的数向后靠拢(似乎我们从后往前遍历,更能说明问题)。具体实现过程:首先,假设有一个n元的数组A,索引分别0,1,2,3.,...n-1。A[n-1]与A[n-2]相比较,将较小的数放在索引为n-2的位置上,即放在靠前的位置上,下一次,A[n-2]与A[n-3]相比较,将较小的数放在索引为n-3的位置上,即放在靠前的位置上,如此下去,数组中原创 2016-05-15 10:03:48 · 631 阅读 · 0 评论 -
小白排序之快速排序
转自 白话经典算法系列之六 快速排序 快速搞定 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个,还有大大小的程序方面的考试如软考,考研中也常常出现快速排序的身影。总的说来,要直接默写出快速排序还是有一定难度的,因为本人就自己的理解对快转载 2016-05-16 17:33:16 · 391 阅读 · 0 评论 -
线性搜索与二分法搜索
线性搜索即从数组一端开始遍历,直到找到元素返回或查找结束。public int linearSearch(int searchKey){ for (int index = 0; index<data.length; index++){ if (data[index] == searchKey) return index; } return -1; }二分法搜索要求数原创 2016-05-16 17:46:24 · 1337 阅读 · 0 评论