一、如何分析一个“排序算法” 从三个维度进行评价和分析: 1. 排序算法的执行效率 a. 最好情况、最坏情况、平均情况时间复杂度 b. 时间复杂度的系统、常数、低阶 c. 比较次数和交换(或移动)次数 2. 排序算法的内存消耗 用空间复杂度来衡量。 原地排序算法,特指空间复杂度是O(1)的排序算法。 ...
分类:
编程语言 时间:
2020-06-19 11:53:01
阅读次数:
41
需求:分别用 冒泡排序法,快速排序法,选择排序法,插入排序法,归并排序将下面数组中 的值按照从小到大的顺序进行排序。 $arr=array(11,3,56,62,21,66,32,78,36,76,39,88,34); 冒泡排序(Bubble Sort) 算法原理:是一种简单的排序算法。它重复地走访 ...
分类:
编程语言 时间:
2020-06-18 16:30:56
阅读次数:
49
前言:冒泡排序是一种很大众的排序算法,基本思路是,两个相邻的进行比较,如果满足条件,就交换位置,如果不满足,保持不变,依次循环到结束。 冒泡排序算法代码如下: $arr = [36, 26, 8, 21, 6, 23, 1, 3, 16]; function bubbleSort($arr) { i ...
分类:
编程语言 时间:
2020-06-17 18:08:04
阅读次数:
50
概述 本文中主要讲解一些常见排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序 常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序 ...
分类:
编程语言 时间:
2020-06-17 13:03:11
阅读次数:
69
算法描述 大多数情况下,在三种简单排序中,插入排序都是最优的选择。虽然插入排序算法仍需要 O(N^2) 的时间,但在一般情况下,它要比冒泡排序快一倍,比选择排序还要快一点。插入排序可以简单表述为:使“标定项”的一侧局部有序,每次将标定项插入有序一侧,同时将另一侧的下一项设为“标定项”。 代码部分 / ...
分类:
编程语言 时间:
2020-06-16 23:25:17
阅读次数:
70
希尔算法: 先对列表分组,再对每组元素分别做插入排序。 元素分组是通过设置步长(gap,即组的数量)实现的。每一组元素内,相邻元素之间的距离(步长)固定。 插入排序与冒泡排序时间复杂度相同(O(n^2)),但执行速度快,是因为需要执行的代码行数少(寻找到插入位置前,插入排序每次判断仅移动一个元素,冒 ...
分类:
编程语言 时间:
2020-06-16 15:32:04
阅读次数:
59
主要介绍关于插入排序、冒泡排序、快速排序、二分归并排序等几种排序算法。 1.插入排序 2.冒泡排序 3.快速排序 4.二分归并排序 首先是几大算法的效率: 1.插入排序: 插入排序:以下图为例,下一个预备插入的为2,首先和前一个7进行对比,7>2,所以7向后挪动,2再和6进行比较,6向后挪动...依 ...
分类:
编程语言 时间:
2020-06-15 22:29:53
阅读次数:
70
<?php header('content-type:text/html;charset=utf-8'); $arr = array(3,2,5,8,23,54,44,6,22,9); echo implode(' ', $arr)."<br/>"; /* 常用排序算法 */ //冒泡排序 func ...
分类:
编程语言 时间:
2020-06-15 15:59:09
阅读次数:
53
#include <iostream> using namespace std; void swap(int &a, int &b) { int t = a; a = b; b = t; } void bbsort(int d[], int len) { for (int i = 0; i < le ...
分类:
编程语言 时间:
2020-06-12 20:26:33
阅读次数:
70
// 插入排序 const insertSort =(arr) => { //假设前面的元素有序,把后一个元素插入合适的位置 for (var i = 1;i<arr.length;i++){ var preIdx = i-1 var currentVal = arr[i] while(preIdx ...
分类:
编程语言 时间:
2020-06-11 19:48:53
阅读次数:
52