# algorithm **Repository Path**: snowyan/algorithm ## Basic Information - **Project Name**: algorithm - **Description**: 算法学习 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-20 - **Last Updated**: 2021-05-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## java算法学习 [http://data.biancheng.net/view/117.html](http://data.biancheng.net/view/117.html) ![常见排序](./image/2021-03-19_09-51.png) ## 选择排序 ![选择排序](./image/2021-03-19_09-53.png) ## 冒泡排序 ![](./image/bubble.webp) 基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 ## 插入排序 通过构建有序数列,对于未排序元素,在已排序数列中从后往前扫描,找到相应位置并插入。 实现过程 1.将一个具有n个元素的待排序数列分成两个子数列,一个有序和一个无序。 2.刚开始,我们将左边第一个元素看成一个有序数列,右边n-1个元素看成无序数列。 3.从右边无序数列中取出一个元素,在已排序数列中从后往前扫描(比较),找到相应的位置并插入,使插入后有序数列仍然有序。 4.重复第3步,直到完成整个排序过程。 ![](./image/v2-b292f97a76c264e49179c3db90d52e12_b.gif) ## 快速排序 (1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。