
排序算法
我是养乐多
这个作者很懒,什么都没留下…
展开
-
堆排序的实现
堆排序的思路:我们将数组看作一棵树,(顺序存储二叉树),数组的第n个元素的左子节点下标为 2n+1数组第n个元素的右子节点下标为 2n+2数组第n个元素的父节点下标为(n-1)/2从第一个不为叶子节点开始,判断其和其子节点大小,若子节点比其本身大,则将子节点与其交换。然后找到该节点上一个节点进行相同操作(在数组中的位置)。直到找到根节点,即把最大的元素推上了根节点的位置。将根节点与末尾节点交换,将最大的元素放在数组末尾。下一次不再遍历图解代码实现public clas原创 2020-05-09 00:45:29 · 310 阅读 · 0 评论 -
使用队列实现基数排序
基数排序:排序方法:第一步:设原来数组如下所示:2, 225,25,36,12,99,2,1,5, 5563, 12251第二步:首先根据个位数的数值,遍历将它们分配至编号0到9的队列中第三步:接下来将这些队列中的数值按先进先出的顺序重新串接起来。第四步:持续进行第2,3步的动作直至最高位数为止,数组最终有序public class RadixSort { public stat...原创 2020-04-28 23:39:38 · 1130 阅读 · 0 评论 -
归并排序的实现
归并排序归并排序先将数组递归折半划分到单独的元素。在两两排序合并public class MergeSort { //递归排序操作将数组折半划分,从最小的数组{大小为两个元素}开始进行归并 public static void mergeSort(int arr[],int low,int high){ //只有当数组内元素为两个或两个以上才进行处理,只有一个元素不...原创 2020-04-28 21:56:21 · 462 阅读 · 0 评论 -
两种选择排序的实现
简单选择排序从数组的第一个元素开始遍历,将当前遍历的元素与后面的元素依次比较,记录下最小数的下标,每次循环将最小数移动到最前面。外循环结束,数组则有序。实现代码: public static void selectSort(int arr[]){ for(int i=0;i<arr.length-1;i++){ int min=i; ...原创 2020-04-28 20:14:16 · 249 阅读 · 0 评论 -
两种插入排序算法的实现
简单插入排序:思路: 从头到尾遍历数组,当前遍历的元素比前一个小,则记录下当前元素的值,在循环向前遍历,找到比当前元素小的位置,将当前元素的值插入这个位置后即可。public static void Insertsort(int arr[]){ int length=arr.length; for(int i=1;i<length;i++){ if(arr...原创 2020-04-28 00:07:56 · 433 阅读 · 0 评论 -
快速排序算法的实现
第一步:设定一个分界值,通过该分界值将数组分成左右两边。(一般取第一个元素)第二步:将大于或等于分界值放在数组右边,将小于或等于分界值放在数组左边。第三步:左边和右边的数据可以独立排序。对于左侧的数据又可以取一个分界值,将该部分数据分成左右两更小部分,同样左边放较小值,右边放较大值。右侧数据也做一样的处理。第四步:递归将左侧数据排序后,再递归排好右侧部分。当左侧和右侧数组都排好序后,整个数组...原创 2020-04-27 11:52:00 · 1251 阅读 · 0 评论 -
冒泡排序算法的实现与优化
冒泡排序:遍历数组,两两比较交换,每一次小循环j将最大的元素放在数组尾部。大循环i是循环数组的长度次数,小循环则不用排最后一个元素,每次循环长度减去i,最后完成排序:public static void BubbleSort(int []values){ for (int i = 0; i <values.length-1 ; i++) { int tem...原创 2020-02-27 11:50:08 · 223 阅读 · 0 评论