【[算法天天练] 归并排序】教程文章相关的互联网学习教程文章

堆排序【代码】

/** 堆排序有2中实现方式:1. 将数组调整为最小堆O(n) 在不断地删除一个元素 调整为最小堆。 最后将有序数组复制回 A[] 空间复杂度为O(n) 时间复杂度O(n*logn).2. 还有更好的算法思路为: 1.先调整为最大堆 将堆顶元素和最后一个元素交换 2.在对剩下的元素重复操作1.空间复杂度为O(1) 时间复杂度为O(n*log n)。 */ #include "iostream"usingnamespace std; void adjust(int a[],int i,int n) {int temp = a[i];int child;for (; ...

一个简单的快速排序【代码】

<?php /** * Created by PhpStorm. * User: saint * Date: 15/8/5 * Time: 上午11:49 */ class Demo { public $a = array(3, 6, 9, 2, 4, 7, 1, 5, 8, 0); public function qsort($left, $right) { if($left > $right) { return; } $i = $left; $j = $right; $standard = $this->a[$left]; while($i != $j) { // 从右向左查找比基准数小的单...

插入排序【代码】

1 #include"iostream" 2#define N 103usingnamespace std;4void excha(int &a,int &b);5int main(){6int a[N]={1,3,2,4,5,6,7,8,9,0};7int i,j,min;8for(int i=1;i<N;i++){91011for(int j=i;j>0&&(a[j]<a[j-1]);j--){ 12 excha(a[j],a[j-1]); 13 } 14 } 15for(int i=0;i<N;i++){ 16 cout<<a[i]<<""; 17 } 18return0; 19} 20void excha(int &a,int &b){ 21int c; 22 c=a; 23 a=b; 24 ...

插入排序

在冒泡排序、选择排序编写代码之后,楼主渐渐找到了coding的信心,熟能生巧,就像写词唱曲之前,都得先背诵大量的诗词,熟悉各路歌曲,才干走出自己的路线,有自己的杰作。好吧,来让楼主继续进行"社会主义0基础阶段"的任务,这次是插入排序。一. 算法描写叙述 插入排序:插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。比如有一个长度为N的无序数组,进行N-1次的插入即能完毕排序;第一次,数组第1个数觉得是...

数据结构与算法系列——排序(12)_计数排序【代码】【图】

1. 工作原理(定义)  计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)  计数排序是一种稳定的线性...

数据结构精要------直接选择和堆排序算法

上篇总结中主要实践了算法的内排序的交换排序,那么接下来我们继续实践选择排序的两种:直接选择和堆排序算法。-----直接选择排序package com.sort;/*** 直接选择排序算法* @author weixing-yang** 算法思路:* 首先找出最大元素,将其与a[n-1]位置置换。* 然后在余下的n-1个元素中寻找最大元素,将其与a[n-2]位置置换。* 如此进行下去,知道n个元素排序完成。*/ public class SelectSort {public void selectSort(int[] arr, i...

堆排序【代码】

堆排序堆排序以二叉形式。以数组形式表示。a[1] 是二叉堆的跟结点,每个结点的有左右子结点。规定每个结点的值大于其子节点的堆叫最大堆,小于的叫最小堆。无序数组通过建堆的方式建立成一个最大或最小堆。算了 ,说不清,上代码。代码:#include <bits/stdc++.h> using namespace std; const int MAXN = 100; int a[MAXN] = {0,4,1,3,2,16,9,10,14,8,7};//10 int n = 10;//数的个数void Max_Heap(int x,int n) {//维护根节点为x的...

HDU 3743 Frosh Week(归并排序求逆序对)【代码】【图】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3743 题目意思就是给你一个长为n的序列,让你求逆序对.我用的是归并排序来求的.归并排序有一个合并的过程,分前后两段,当a[i] > a[j]时,说明a[j]比前面那段啊[i],a[i+1],a[i+2]....,a[mid],比这些都要小,所以总逆序对数要加上mid-i+1. 1// File Name: HDU3743.cpp2// Author: xiaxiaosheng3// Created Time: 2015年03月09日 星期一 21时54分45秒 4 5 #include<vector>6 #includ...

HDU 4857 逃生 拓扑排序好题 第一次做CLJ出的题【代码】【图】

逃生Problem Description糟糕的事情发生啦,现在大家都忙着逃命。但是逃命的通道很窄,大家只能排成一行。现在有n个人,从1标号到n。同时有一些奇怪的约束条件,每个都形如:a必须在b之前。同时,社会是不平等的,这些人有的穷有的富。1号最富,2号第二富,以此类推。有钱人就贿赂负责人,所以他们有一些好处。负责人现在可以安排大家排队的顺序,由于收了好处,所以他要让1号尽量靠前,如果此时还有多种情况,就再让2号尽量靠前,...

js 中的冒泡排序 和 快速排序【代码】【图】

冒泡排序 var arr = [2,43,35463,232,2,645,4567,5];function bubbleSort(arr) {for (let i = 0 ; i < arr.length-1 ; i++) {for (let j = 0 ; j < arr.length - 1 - i ; j++) {if(arr[j] > arr[j+1]){var temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}bubbleSort(arr);console.log(arr); 2、快速排序var arr = [2,43,35463,232,2,645,4567,5];function quickSort(arr) {//标杆const pivot = arr[0];//比标杆大的数组va...

java实现堆排序

package com.peter.app.hello.heapsort; /** * heap sort * @author Peter.Yu * */ public class HeapSort { public static int COUNT = 0; /** * build heap * @param a * @param size */ public static void buildHeap(int[] a, int size) { for (int i = size / 2; i >= 1; i--) { adjustHeap(a, i, size); } } /** * adjust heap * @param...

归并排序【代码】【图】

归并排序归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 代码实现:def merge_sort(alist):n = len(alist)if n <= 1:return alistmid = n//2left_li = merge_sort(alist[:mid])...

排序算法【代码】

#define LENGTH(array) ( (sizeof(array)) / (sizeof(array[0])) ) #define swap(a,b) do{a=a+b;b=a-b;a=a-b;}while(0) //两个数相同时 会导致结果为0一、插入排序1、直接插入排序 1/**2** 直接插入排序(插入到准确的位置) 不利于二分查找 直接遍历3** 时间复杂度:比较和移动和平均时间复杂度为O(n^2) 适合基本有序的序列,此时复杂度接近O(n)4** 空间复杂度:O(1)5** 稳定性:稳定6**/ 7void InsertSort(int a[], in...

终极快速排序【图】

1.终极快速正序排序 Arrays.sort()方法输出:23456789ABCDEF2.终极快速逆序排序 Collections.reverse()方法输出:94726853FDEACB输出:98765432FEDCBA 原文:https://www.cnblogs.com/justBobo/p/10661407.html

php不用内置函数对数组排序的两个算法代码

一朋友找工作遇到的试题,备注一下。 极有可能今后我也会遇到的。 问题:php不用内置函数对数组排序,可能是降序或者升序 第一种方法:传说中的冒泡法 复制代码 代码如下:function arraysort($data, $order = ‘asc‘) { //asc升序 desc降序 $temp = array (); $count = count ( $data ); if ($count <= 0) return false; //传入的数据不正确 if ($order == ‘asc‘) { for($i = 0; $i < $count; $i ++) { for($j = $count - 1; $j...