![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
飞天飞哥
java开发者
展开
-
希尔(shell)排序
冒泡排序算法,选择排序算法和插入排序算法,虽然思路比较直观,但是排序的效率比较低。对于大量的数据需要排序时,往往需要寻求其他更为高效的排序算法。Shell排序算法便是其中一种。 第一次排序,首先将数组分为6/2=3个数字序列,第1个数据127和第4个数据101为一对,第2个数据118和第5个数据112为一对,第3个数据105和第6个数据100为一对。每一对数据进行排序后的数据101 112 100原创 2017-11-26 19:41:32 · 311 阅读 · 0 评论 -
插入排序
插入排序(Insertion Sort)算法通过对未排序的数据执行逐个插入至合适的位置而完成排序工作。插入排序算法的思路比较简单,应用比较多。插入排序算法通过比较和插入来实现排序,其排序流程如下: ①首先对数组的前两个数据进行从小到大的排序。 ②接着将第3个数据与排序好的两个数据比较,将第3个数据插入合适的位置。 ③然后,将第4个数据插入已排序好的前3个数据中。 ④不断重复上述过程,知道把最原创 2017-11-26 19:37:59 · 145 阅读 · 0 评论 -
选择排序及C++/java代码实现(SelectSort)
算法:选择排序 从当前未排序的整数中找到一个最小的整数,将它放在已排序的整数列表的最后。 要点:选择排序选最小的,往左边选。 冒泡排序与选择排序 (选择排序选最小的放在左边,比冒泡排序快,冒泡排序里交换很多次) #include <iostream> using namespace std; void SelectSort(int *a, const int n); int main(){ int原创 2017-10-28 21:12:36 · 279 阅读 · 0 评论 -
冒泡排序及C++/java代码实现(BubbleSort)
从左向右扫描数据,选择最大的数据,放在右边。 必要点: 比较相邻的两个数,如果左边的数大于右 边的数就进行交换。 #include <iostream> using namespace std; void BubbleSort(int list[],int n); int main(){ int a[]={2,4,6,8,0,1,3,5,7,9}; BubbleSort(a,10);原创 2017-10-28 22:10:08 · 329 阅读 · 1 评论 -
谷歌 鸡蛋测楼层
package code.improved; public class ThrowEggs { //谷歌高楼扔鸡蛋问题 //从T层高楼扔下鸡蛋,用何种方式使得在最坏情况下,使尝试的次数最少 public static void main(String[] args) { int T=100; int[] mall=new int[T+1];//原创 2017-11-09 17:47:20 · 294 阅读 · 0 评论 -
顺序查找及C++代码实现SequentialSearch
顺序查找与折半查找(二分查找) 没有排序的数据:只能顺序查找 顺序查找:速度慢 例如:100万个数据,平均要找50万次! #include <iostream> using namespace std; int SequentialSearch(int *a,const int n,const int x); int main(){ int m[]={2,4,6,8,0,1,3,5,7,9}; i原创 2017-10-30 21:55:23 · 739 阅读 · 0 评论 -
快速排序(quikSort)及java代码实现
最流行的排序算法 速度最快的排序算法 pivot:枢轴、枢纽 递归1.首先设定一个分界值,通过该分界值将数组分成左右两部分。 将大于等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边,此时,左边部分中各元素都小于等于分界值,而右边部分中各元素都大于等于分界值。 2.然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可取一个分界值,将该部分数据分成左右两个部分,同样将左边放原创 2018-01-11 20:37:02 · 235 阅读 · 0 评论