算法
一米阳光MM
每一天的积累是很重要的
展开
-
七大排序算法--冒泡排序及其优化
思路: 1.从第一个元素开始向后比较相邻元素的大小,如果前一个比后一个大,就交换,直到最后一个元素 2.1步骤后最大的元素已经在最后一个位置,重复1步骤,但只走到倒数第二个元素(因为倒数第一个已经是最大的了) 若有n个元素,重复步骤n-1次 初步代码: public class MyBubbleSort { public static void main(String[] args) ...原创 2019-07-26 15:15:15 · 153 阅读 · 1 评论 -
七大排序算法--选择排序及其优化
思路: 1.找到从i(i从0开始到arr.length-2)处开始到arr.length处的最小值的位置,交换i和最小值位置处的值, 2.重复 1 步骤 arr.length-1次 初步代码 public class MySelectionSort { public static void main(String[] args) { int[] arr = {3,2,...原创 2019-07-26 15:26:37 · 177 阅读 · 0 评论 -
七大排序算法--插入排序及其优化
思路: 1.将数组的第一个元素看成有序的,后面都是无序的 2.用无序序列的第一个元素(需要用临时变量将其存起来,以便有序序列的值向后移动)和有序序列中的值作比较(从有序序列的最后一个元素向前比较) 3.有序序列的值只要比其大都依次向后移一位 4.找到 <= 该元素的位置p,将该元素插入p+1处 初步代码: public static void insertSort(int[] arr){...原创 2019-07-26 19:10:18 · 112 阅读 · 0 评论 -
七大排序算法--希尔排序
思路: 1.选择一个增量序列t1,t2,…,tk,其中t1>t2,tk=1; 2.按增量序列个数k,对序列进行k 趟排序; 3.每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。 代码实现: public static void shellSort(int[] arr...原创 2019-07-26 19:33:02 · 176 阅读 · 0 评论 -
七大排序算法 -- 归并排序
思路: 1.把长度为n的输入序列分成两个长度为n/2的子序列; 2.对这两个子序列分别采用归并排序; 3.将两个排序好的子序列合并成一个最终的排序序列。 动图点这里:.html 代码实现: public static void mergeSort(int[] arr,int l,int r,int[] tmp){ if(l < r){//分到一个元素 ...原创 2019-07-26 19:45:42 · 128 阅读 · 0 评论 -
七大排序算法--快速排序
思路: 1.从数列中挑出一个元素,称为 “基准”(pivot); 2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作; 3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。 代码实现: public static...原创 2019-07-26 19:53:31 · 136 阅读 · 0 评论