1.  这段时间准备找工作了,所以就从最简单的排序开始看看(以下是java实现的快速排序和堆排序):

注:快排和堆排序都是根据二叉树的原理来加快排序速度的。。。

快排:

        public static void initSort(int[] value){      //初始化排序quickSort(value,0,value.length-1);show(value);}private static void show(int[] value) {for(int i : value){System.out.print(i+",");}}public static void quickSort(int[] value,int low,int high){if(low < high){int group = groupSort(value,low,high);quickSort(value, low, group-1);quickSort(value, group+1, high);}}private static int groupSort(int[] value, int left, int right) {int x = value[left];int low = left,high = right;while(low < high){while(low<high && value[high]>=x){high--;}if(low<high){value[low] = value[high];low++;}while(low<high && value[low]<=x){low++;}if(low<high){value[high] = value[low];high--;}}value[low] = x;return low;}public static void main(String[] args) {int[] sort = {5,33,1,7,9,888,25,234321,4325,54,4234,7876};initSort(sort);}

堆排序

        public static void initHeap(int[] value){for(int i=(value.length-1)/2; i>=0; i--){changeSmallHeap(value, i, value.length);}}public static void heapSort(int[] value){initHeap(value);for(int i=value.length-1; i>=1; i--){int b = value[0];value[0] = value[i];value[i] = b;changeSmallHeap(value, 0, i-1);}}public static void changeBigHeap(int[] value,int start,int end){int temp = value[start];int i  = start,j = start*2;boolean finished = false;while(j <= end && !finished){if(j<end && value[j]<value[j+1]){  //j<en 表示还有又子树,所以value[j+1]成立,这里的j<end采用短路运算j = j+1;}if(temp >= value[j]){finished = true;}else{value[i] = value[j];i = j;j = i*2;   //继续筛选他的子树} }value[i] = temp;}public static void changeSmallHeap(int[] value,int start,int end){int temp = value[start];int i  = start,j = start*2;boolean finished = false;while(j <= end && !finished){if(j<end && value[j]>value[j+1]){  //j<en 表示还有又子树,所以value[j+1]成立,这里的j<end采用短路运算j = j+1;}if(temp <= value[j]){finished = true;}else{value[i] = value[j];i = j;j = i*2;   //继续筛选他的子树} }value[i] = temp;}private static void show(int[] value) {for(int i : value){System.out.print(i+",");}}public static void main(String[] args) {int[] sort = {5,33,1,7,9,888,25,234321,4325,54,4234,7876};heapSort(sort);show(sort);}

java 快排和堆排序相关推荐

  1. java快排算法解读,java 快排的思路与算法

    java 快排的思路与算法 有时候面试的时候的会问道Arrays.sort()是怎么实现的,我以前根本不知道是什么东西,最近点进去看了一下.直接吓傻, //看到这个时候还是比较淡定的,可怕的事情来了. ...

  2. java快排原理_Java数据结构与算法——快速排序

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督.本篇文章介绍排序算法中最常用也是面试中最容易考到的排序算法--快排,包括快排的思 ...

  3. 算法——java快排(快速排序)

    手写java快排(快速排序)代码--双边循环法,本人亲测哈哈!! package com.abc.backend.algo;import java.util.Arrays;/*** 快排(双边循环法) ...

  4. java 快排_秋招|字节跳动Java后台已上岸,发个面经回馈牛油

    作者:beatLAL 链接:https://www.nowcoder.com/discuss/215891 来源:牛客网 本人从牛客大佬的面经中学到了很多,这次上岸回馈牛油,把自己面经分享给大家,希望 ...

  5. 排序算法整理(冒泡、选择、快排、堆排序、希尔、归并)

    文章目录 前言 插入排序 希尔排序 关键代码如下 归并排序 快速排序 堆排序 前言 大四了开始学了,希望为时不晚,呜呜. 总结数据结构的相关知识,代码会用java实现 其他相关部分: 2-3树.平衡树 ...

  6. java 快排_八大排序-快速排序(搞定面试之手写快排)

    概要 快速排序由C. A. R. Hoare在1960年提出,是八大排序算法中最常用的经典排序算法之一.其广泛应用的主要原因是高效,核心算法思想是分而治之.快速排序经常会被作为面试题进行考察,通常的考 ...

  7. 【数据结构算法】快排/归并/堆排序 c++

    一个用来了解数据结构算法(各种排序,列表,树等)很友好的网站: https://visualgo.net/en 该题目来自于牛客:算法篇-排序问题 快排(必备)+归并(体会分治)+堆(自己建堆) // ...

  8. Java快排算法详解

    快排算法底层基本思想: 先取出数列中的第一个数作为基准数. 将数列中比基准数大的数全部放在他的右边,比基准数小的数全部放在它的左边. 然后在对左右两部分重复第二步,直到各个区间只有一个数. 具体Jav ...

  9. java 快排非递归_C++ 中快排的递归和非递归实现

    快排的递归 void quickSort1(int* root,int low,int high) { int pat=root[low]; if(low { int i=low,j=high; wh ...

最新文章

  1. SFB 项目经验-65-使用域管理员安装不了Exchange 2010 SP3 CU21
  2. plsql的异常提示怎么定位_PLSQL异常处理
  3. HDU 4445 Crazy Tank --枚举
  4. word List 08
  5. python中的字典及注意事项
  6. delve应该安装到哪_消防水炮安装高度为多少米标准
  7. nginx 日志格式设置 和 负载均衡下 获取真实ip
  8. 一位清华学长的CTO成长之路 -- 不断的打破自己的边界
  9. 沟通CTBS助大川集团集中部署K/3系统
  10. lg linux电视安装软件,LG电视如何安装第三方应用软件的方法教程
  11. 自考软件工程常考简答题历年真题
  12. Android从Assets复制文件到本地
  13. 在CAD中求出多条线段的线段总和
  14. 做微商洗发水怎么做引流?洗发水类微商怎么引流精准客户?
  15. 阿里云大数据分析师职业认证
  16. android 绘制坐标系(雷达探测界面)
  17. 嵌入式linux启动信息完全注释
  18. DNS系统概述及重要性
  19. html千年之恋的图片,HTML+CSS+JavaScript项目6 “千年之恋”注册页面制作_0525_连蕊.pptx...
  20. 【九章算法】北美求职之面试题目

热门文章

  1. WCF契约的简单介绍(服务契约 数据契约 消息契约)
  2. TopCoder 入门教程 -- sqybi完善版
  3. linux的passwd命令的作用,Linux passwd 命令的使用
  4. srm32f4按键蜂鸣器_stm32 用中断实现按键点灯和蜂鸣器鸣叫(固件库版)
  5. 70个python毕设项目_10 个最值得 Python 新人练手的有趣项目
  6. OpenStack Rally 质量评估与自动化测试利器
  7. OpenStack Nova Placement API 统一资源管理接口的未来
  8. RS485通信简单介绍
  9. Netty+SpringBoot+FastDFS+Html5实现聊天App
  10. 并发编程线程通信之管道流