排序
狂盗一支梅
以前是干饭人,现在还是干饭人
展开
-
【数据结构】【排序】快速排序
快速排序的原理就是使用某个中间值将数组切割成两部分,一部分比中间值都小,另一部分比中间值都大,这是一次排序的作用;分别对两部分进行同样的操作,直到只剩下一个数,这样最终的数组就变成了有序的。 以下是java实现: package com.kdyzm.sort.quicksort; import java.util.Scanner; /** * 快速排序相关P2...原创 2016-01-16 10:38:00 · 242 阅读 · 0 评论 -
【数据结构】【排序】归并排序
顾名思义,归并排序的核心思想就是“归并”,将两个有序的数列进行“二路归并”能够非常快速的实现合并成一个有序数列: public static void mergeArray(int[] array,int[] temp,int low,int midLoc,int high){ int i=low; int j=midLoc+1; int k=0; while(i<...原创 2016-01-16 18:43:45 · 166 阅读 · 0 评论 -
【数据结构】【排序】选择排序
选择排序的核心思想就是从前往后依次找到最小的数放到前面,第一次找0~n-1之间最小的数放到0上;第二次找1~n-1之间最小的数放到1上,依次类推,但是只找n-1次,也是就是说最后一次不要找了,因为最后一个数字一定是有序的。 import java.util.Scanner; public class SelectSort{ public static void mai...原创 2016-01-16 21:14:09 · 113 阅读 · 0 评论 -
【数据结构】【排序】冒泡排序
冒泡排序的思想是从前往后找最大值,然后将最大值放到最后,给人的感觉就像是气泡从水底升到水面的时候一点点膨胀变大的样子差不多,所以该排序算法的名字为“冒泡排序”;虽然核心依然是找最大值,但是找最大值的方法却有不同,如果只是普通的找最大值,只需要定义一个MaxValue保存第一个值,然后依次向后找即可;但是在冒泡排序中,找最大值的方法是"交换",相邻两个数进行比较,如果前者大于后者,则...原创 2016-01-17 09:56:44 · 181 阅读 · 0 评论 -
【数据结构】【排序】插入排序
插入排序的思想是将数组分为前面有序和后面无序两部分,每次取后面无序部分的第一个数插入到前面有序的部分中,使得插入之后前面有序的那一部分仍然有序。 import java.util.Scanner; public class InsertSort{ public static void main(String args[]){ Scanner scanner...原创 2016-01-17 11:09:44 · 129 阅读 · 0 评论 -
【数据结构】【排序】折半插入排序
折半插入排序是对直接插入排序的升级算法,直接插入排序算法在大数据量面前排序效率是比较低的,折半插入排序的算法对直接插入排序算法的改进就是“查找插入位置”上的算法上的改进,由于需要查找的数据在数组上正好是有序的部分,那么可以非常方便的使用折半查找的算法查找插入的位置。 import java.util.Scanner; public class BInsertSort{ public ...原创 2016-01-17 14:22:13 · 251 阅读 · 0 评论 -
【数据结构】【排序】希尔排序
希尔排序是对直接插入排序算法的一种改进,其基本原理就是让一个无序的数列变得“基本有序”,那么在最后进行直接插入排序的时候时间复杂度将会降低很多(在理想情况下,如果一个数列是有序的,那么使用直接插入排序的算法时间复杂度为O(n));希尔排序算法的效率和“步长”的定义息息相关,但是如何给出一个步长使得希尔排序算法的效率最高,是非常困难的。 import java.util.Scann...原创 2016-01-18 10:03:00 · 138 阅读 · 0 评论 -
【数据结构】【排序】堆排序
堆排序核心思想是根据现有数组构建大顶堆或者小顶堆,堆顶元素就是该数组的最大值(大顶堆)或者最小值(小顶堆);将该最值按照顺序放到一个“有序区”中,然后将“无序区”中最后一个元素放到堆顶,不断调整使其满足大顶堆或者小顶堆的条件,调整过后处于堆顶的就是剩余无序区中的最大值或者最小值,将该值放入到有序区中......不断如此这般的调整,最终当“无序区”中的元素数量为0的时候,“有序区”...原创 2016-01-21 16:16:55 · 209 阅读 · 0 评论 -
【数据结构】【查找】二叉排序树
使用二叉排序树查找效率也非常高,当然有更稳定的二叉平衡树,但是实现起来比较困难,所以这里只实现了二叉排序树;二叉排序树的特点如下: 左子树中的所有节点值都小于父节点值 右子树中的所有节点值都大于父节点值 所有节点不允许出现重复,否则会破坏二叉排序树的数据结构 二叉排序树的中序遍历的结果就是所有元素的排序结果 二叉排序树是二叉树 所以,使用二叉排序树不仅仅能够实现快...原创 2016-01-22 13:25:26 · 200 阅读 · 0 评论