
java 排序算法
lovme_huan
这个作者很懒,什么都没留下…
展开
-
冒泡排序学习
冒泡排序:1、第一个和第二个元素依次比较,如果前一个大于后一个则,将两个元素的值交换,后一个元素再与下一个元素进行比较,直到最后一个元素。此时得到的最后一个元素将是数组中最大的元素。最大的元素固定,不在进行比较操作;2、再从第一个第二个开始依次比较,如果前一个大于后一个则,将两个元素的值交换,后一个元素再与下一个元素进行比较,直到倒数第二个元素。此时得到的倒数第二个元素是数组中第二大的元素原创 2017-04-19 11:53:50 · 224 阅读 · 0 评论 -
简单排序学习
简单排序:1、选取第一元素作为基准位置,依次跟后面的元素比较,如果后面的元素比这个基准位置的元素小,则互换两个元素的值,一直到和最后一个元素比较完,得出基准位置的元素为最小的元素;2、选取第二元素作为基准位置,依次跟后面的元素比较,如果后面的元素比这个基准位置的元素小,则互换两个元素的值,一直到和最后一个元素比较完,得出基准位置的元素为第二小的元素; ......3、根据原创 2017-04-19 11:22:13 · 284 阅读 · 0 评论 -
快速排序学习
快速排序: 1、取要排序的数组的第一个值(可有其它选择)作为比较值,记为k; 2、将要排序的数组的第一个值的索引记为 i,最后一个值的索引记为 j; 3、从 j 开始倒序遍历和比较的基准值 k 做比较,如果 j >= k;则 j--;如果 j 4、从 i 开始顺序遍历和比较的基准值 k 做比较,如果 i k; 将数组中索引为原创 2017-04-18 18:00:20 · 237 阅读 · 0 评论 -
直接插入排序学习
插入排序:1、从未排序的第一个元素开始,和前一个已排好序的元素相比较,如果小于前一个元素就交换位置,并继续与前一个元素比较,大于则跳出当前这一层的循环,这样当前元素与原来已排好序的元素,组成一个新的已经排好序的序列;(原数组包含(0~i)已排好序的序列与(i~lenght-1)未排好序的序列),(第一个元素可以看成是已排好序的序列,从第二个元素起算第一个未排好序的序列首元素);2、循环原创 2017-04-19 16:00:35 · 275 阅读 · 0 评论 -
伪最大堆顶堆排序--没有真正理解最大堆
伪最大堆排序HeapSort:1、在这个排序中只想到把最大的值放到堆顶,没有注意到最大堆的定义:最大堆的任意子树中的根节点不小于该子树的子节点;public class HeapSortCopy { private static int num = 0;//循环次数 public int[] sort(int[] forSort,int lenght){原创 2017-04-20 15:41:25 · 271 阅读 · 0 评论 -
最大堆排序学习
堆排序(最大堆):1、将数组作为一个未排序序列,给这个序列构建最大堆;2、交换堆顶和未排序序列最后一个位置的元素值,最后一个位置的元素加入已排序序列;3、由于交换导致未排序序列的最大堆受到影响,所以需要对未排序堆进行维护,让它维持最大堆,然后1,2操作循环直到未排序序列元素为0,既数组都排完序代码如下:package algorithm;import java.ut原创 2017-04-20 18:58:30 · 309 阅读 · 0 评论 -
归并排序学习
http://blog.youkuaiyun.com/yinjiabin/article/details/8265827/ 这个原理写的比较好归并排序: 归并排序的实质,就是将多个有序的小数列,归并并排序到一整个大数列中;拿到一个无序的需要排序的数列:首先应该先将该数列拆分成一个个小数列,然后小数列排序,之后再一层一层归并排序到大数列中;1、现将大的无需数列从中间拆分成两个小转载 2017-04-24 15:18:44 · 229 阅读 · 0 评论