数据结构_快速排序

//快速排序
  class ArrayList {
    constructor () {
      this.array = []
    }
    insert (data) {
      return this.array.push(data)
    }
    quickSort () {
      this.array = this.quick(this.array)
    }
    //辅助函数
    quick (arr) {
      let length = arr.length
      if (length <= 1) return arr
      let pivotValue = arr.splice(Math.floor(length / 2), 1)[0]
      let leftArr = []
      let rightArr = []
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] < pivotValue) leftArr.push(arr[i])
        else rightArr.push(arr[i])
      }
      return this.quick(leftArr).concat(pivotValue, this.quick(rightArr))
    }
  }
  let arr = new ArrayList()
  arr.insert(9)
  arr.insert(5)
  arr.insert(8)
  arr.insert(0)
  arr.insert(1)
  arr.insert(6)
  arr.insert(4)
  arr.insert(7)
  arr.insert(3)
  arr.insert(2)

原文地址:https://www.cnblogs.com/JunLan/p/12368754.html

时间: 2024-10-13 10:12:34

数据结构_快速排序的相关文章

数据结构_课程设计——最小生成树:室内布线

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 这道课程设计,费不少时间,太麻烦了= =.(明明是能力不够) ~~~~最小生成树:室内布线~~~~ 题目要求: 装修新房子是一项颇为复杂的工程,现在需要写个程序帮助房主设计室内电线的布局. 首先,墙壁上插座的位置是固定的.插座间需要有电线相连,而且要布置的整齐美

数据结构_课程设计——并查集:检查网络

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 这两天做数据结构课程设计,因为以前做过ACM题,感觉还可以,不是很难呀 ~~~~并查集:检查网络~~~~ 题目要求: 给定一个计算机网络以及机器间的双向连线列表,每一条连线允许两端的计算机进行直接的文件传输,其他计算机间若存在一条连通路径,也可以进行间接的文件传

蓝桥杯——基础练习之分治法_快速排序

分治法,分而治之,基本思路:分,解,和. 初探分治之快速排序. public class _DividedConquer { static int[] iarr; public static void main(String[] args) { // TODO Auto-generated method stub iarr=new int[]{6,4,5,3,1,2}; quick(0, iarr.length-1); for(int i:iarr) { System.out.print(i+"

浅谈算法和数据结构: 四 快速排序

原文:浅谈算法和数据结构: 四 快速排序 上篇文章介绍了时间复杂度为O(nlgn)的合并排序,本篇文章介绍时间复杂度同样为O(nlgn)但是排序速度比合并排序更快的快速排序(Quick Sort). 快速排序是20世纪科技领域的十大算法之一 ,他由C. A. R. Hoare于1960年提出的一种划分交换排序. 快速排序也是一种采用分治法解决问题的一个典型应用.在很多编程语言中,对数组,列表进行的非稳定排序在内部实现中都使用的是快速排序.而且快速排序在面试中经常会遇到. 本文首先介绍快速排序的思

Windows 已在 数据结构_顺序表.exe 中触发一个断点——new和delete注意事项

实现数据结构的顺序表的类时,输入,改,删,查都可以,但是最后析构函数时持续出错 错误提示"Windows 已在 数据结构_顺序表.exe 中触发一个断点" int *elem=new int(LIST_INIT_SIZE); if(!elem)cout<<"overflow"<<endl; if(leng>LIST_INIT_SIZE) cout<<"error"; else {    length=le

折半查找_快速排序

折半查找链接:https://www.baidu.com/link?url=yNyTQeYRL5xwA0aA9W8iAUVeroe87jU8j1v5qTrvYJ8uPCU8O-Pgw9oHg-TzHZwc3Hh3Lly8fkEw4fGaiUjKXa-n4rTu9eVQY0mdn-s_ttwHYINPLm7irBP5ivR4JrDrJUVm3KvFkgrlf8D-id7e2ebRpTZmJdaPfOeytTEVd8yWZUtGOwnNOtPnzxIwuQmnw68xdJ6dnH-pi2c7CEEi

C语言版数据结构及算法_快速排序

/* 参数: a:数组首地址 left:需要排序的数组的开始位置 right:需要排序的数组的结束位置 */ void qSort(int *a,int left,int right){ //快速排序 if (left>=right) { return; }else{ int value=a[left]; int initLeft=left; int initRight=right; while (left!=right) { while (value<a[right]) { right--;

数据结构_概览

概念: 数据:是对客观事物的符号表示.能输入到计算机中并且被计算机程序处理的符号的总称: 数据元素:描述数据的基本单位: 数据项:描述数据的最小单位: 数据类型:数值,字符等对数据分成不同的类型: 抽象数据类型:由数据对象,数据关系和基本操作三部分组成,可用三元组(D,S,P)表示: 数据结构:数据和结构两部分,数据部分是数据元素的集合,结构是指数据之间关系的集合: 数据结构的逻辑结构:用抽象的数据模型来描述数据结构中数据元素之间的逻辑关系: 物理结构(又叫 存储结构 或者 内存映像):数据在计

数据结构_个人问题解疑1

1.节点与结点I.节点如图/网络中一个点到达另外一个点,可认为中间的点把这两个点截断,为节点(截断点) II.结点数据存储结构如叶子结点 但是这两个点本质是一样的,只是在不同场合叫法不同而已 2.记录对事物的统称如出行记录,学生管理记录等-- 另外:有名为"记录"的数据结构