冒泡排序
基本思想:把数组垂直排列,把各项的值当作气泡的重量。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组:凡扫描到违反本原则的轻气泡,就使其向上“漂浮”。如此反复进行,直到最后两个气泡都是轻者在上,重者在下为止。
function bubbleSort(arr){ var len = arr.length, i, j, temp; var exchange = false; for(i = 0; i < len; i++){ exchange = false; for(j = len-1; j > i; j--){ if(j && (arr[j] < arr[j-1])){ exchange = true; temp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = temp; } } if(!exchange) break; } return arr; }
快速排序
基本思想:分治法。分治法就是把原问题分解为若干个规模更小但结构与原问题相似的子问题。
在数组中随机选择一项作为基准(povit),以此基准划分两个区间,比povit小的都在左,比povit打的都在右。再用递归分别对左右区间做划分。
function quickSort(arr){ if (arr.length <= 1) { return arr; } var povitIndex = Math.floor(Math.random()*arr.length); var povit = arr.splice(povitIndex, 1)[0]; var leftArr = [], rightArr = []; for (var i = arr.length - 1; i >= 0; i--) { if (arr[i] < povit) { leftArr.push(arr[i]); } else { rightArr.push(arr[i]); } } return quickSort(leftArr).concat([povit], quickSort(rightArr)); }
相关推荐
冒泡排序是一种简单的交换排序,通过不断比较相邻元素并交换位置,使得最大(或最小)的元素逐渐“浮”到序列末尾。虽然冒泡排序的时间复杂度较高,但在最佳情况下(已排序的数组)其效率与插入排序相同。 4. **...
本实验旨在深入理解并掌握一种典型的交换排序算法——冒泡排序,通过对其实现和优化,计算在特定数据集上执行排序所需的最少交换次数,从而深化对算法效率和复杂性的认识。 #### 冒泡排序原理与特性 冒泡排序是一...
冒泡排序是一种直观的排序算法,通过不断交换相邻的逆序元素来逐渐排序整个数组。在每一轮迭代中,最大的元素都会“冒泡”到数组的末尾。这个过程会重复进行,直到数组完全排序。冒泡排序的时间复杂度在所有情况下...
冒泡排序和快速排序是两种常见的排序算法,它们在排序过程中的时间性能有很大的差异。在本文中,我们将比较冒泡排序和快速排序的时间性能,并讨论它们在实际应用中的优缺点。 冒泡排序的时间性能: 冒泡排序的时间...
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
1. 快速排序:由C.A.R. Hoare提出,是一种采用分治策略的高效排序算法。其核心思想是选取一个基准元素,将数组分为两部分,一部分的所有元素都比基准小,另一部分的所有元素都比基准大,然后对这两部分递归进行快速...
6. 快速排序:快速排序使用分治策略,选取一个基准元素,将数组分为两部分,一部分小于基准,另一部分大于基准,然后递归地对这两部分进行快速排序。平均时间复杂度为O(n log n),但最坏情况下为O(n^2)。 7. 归并...
本文将深入探讨四种在C++中实现的常见排序算法:插入排序、冒泡排序、堆排序和快速排序。这些算法各有特点,适用于不同的场景,理解并掌握它们对于提升编程能力至关重要。 1. **插入排序**: 插入排序是一种简单的...
本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合提供的文件名(sort.c、set.c、main.c、set.h、sort.h)推测出每个文件可能包含的代码实现。 1. **合并...
7. 快速排序:快速排序由C.A.R. Hoare提出,采用分治策略,选取一个基准元素,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后对这两部分分别进行快速排序。平均时间复杂度为O(n log n)...
快速排序和冒泡排序是两种常见的排序算法,它们在计算机科学中扮演着重要的角色,特别是在数据处理和优化程序性能方面。本篇文章将深入探讨这两种排序算法的原理、效率以及它们在C#编程语言中的实现。 首先,让我们...
本篇文章将深入探讨九种常见的排序算法:冒泡排序、桶排序、计数排序、堆排序、插入排序、合并排序、快速排序、基数排序以及选择排序,并以C语言实现为例。 1. **冒泡排序**: 冒泡排序是一种简单的排序算法,通过...
根据给定的文件信息,我们将深入探讨几种经典的排序算法,包括选择排序、冒泡排序、交换排序、希尔排序、插入排序以及基数排序。这些算法在计算机科学领域内有着广泛的应用,各自具有独特的特点和适用场景。 ### 1....
这七种算法分别是:冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序和快速排序。 1. **冒泡排序**: 冒泡排序是最基础的排序算法之一,通过重复遍历待排序序列,比较相邻元素并交换位置来实现排序...
本文将深入探讨C#中实现的四种经典排序算法:冒泡排序、选择排序、插入排序和希尔排序。每种算法都有其特定的应用场景和性能特点,理解它们的工作原理对于提升编程技能和优化代码效率至关重要。 首先,我们来看**...
冒泡排序和快速排序是两种常用的排序算法,它们的时间性能是开发者和研究人员所关心的热点话题。在本文中,我们将对冒泡排序和快速排序的时间性能进行深入分析和比较。 冒泡排序是一种简单的排序算法,它的时间...
直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...
快速排序:快速排序是一种常用的排序算法,它使用分治策略来把一个序列分为两个子序列,然后递归地对子序列进行排序。与归并排序不同的是,快速排序对于子序列的排序是并行的,因此它的实现可以比归并排序更加高效。...