【java实现各种排序算法及比较】教程文章相关的互联网学习教程文章

各种排序算法原理图【图】

Insertion:插入排序,每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。 详细介绍见:http://www.cnblogs.com/kkun/archive/2011/11/23/2260265.htmlSelection:选择排序,直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小(或最大)数字出来,顺序放入新数组,直到全部拿完。详细介绍见:http://www.cnblogs.com/kkun/archive/2011/11/23/2260281.htmlBubble:泡排序,是一个两层...

归并排序是一种有效的排序算法

gamefrye 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序的基本思想将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个...

排序算法总结

1.冒泡排序  相邻两个交换  时间复杂度O(n2)  稳定  2.插入排序  O(n2)  稳定  3.选择排序  O(n2)  不稳定  4.快排1)从待排序的n个记录中任意选取一个记录(通常选取第一个记录)为分区标准;2)把所有小于该排序列的记录移动到左边,把所有大于该排序码的记录移动到右边,中间放所选记录,称之为第一趟排序;3)然后对前后两个子序列分别重复上述过程,直到所有记录都排好序。稳定性:不稳定平均时间复杂度...

冒泡排序(算法源码)

算法源码://BubbleSort.cpp#include <iostream>using namespace std;void BubbleSort(int a[], int n){ for(int i=n-1;i>0;i--) {for(int j=0;j<i;j++) { if (a[j]>a[j+1]) { int tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } } }}int main(){ int a[]={4,3,6,9,7,5,1,10,2,15,8,7,6}; BubbleSort(a,sizeof(a)/sizeof(a[0])); cout<<"after bubble sort."<<endl; for (int i=0;i<sizeof(a)/sizeof(a[0]);...

五种排序算法【代码】

冒泡排序 const bubbleSort = (arr) => {for (let i = 0; i < arr.length; i++) {for (let j = i; j < arr.length; j++) {if (arr[j] < arr[i]) {let cur = arr[j]arr[j] = arr[i]arr[i] = cur}}}return arr }快速排序 const quickSort = (arr) => {if (arr.length < 2) return arrlet mid = Math.floor(arr.length / 2)let midVal = arr.splice(mid, 1)[0]let left = []let right = []for (let i = 0; i < arr.length; i++) {if (...

算法---排序算法---选择排序【代码】

1、实现思路:    从 待排序的数据中 选择最小(或最大)的 放在首位--->从除首位数据中 选择最小(或最大)放在 除首位的首位,以此类推,直至 未排序的为0;2、算法分析:    2.1、不稳定 排序;    2.2、比较趟数: 0至(n-1);比较次数: a=(n-1)+(n-2)+...2+1 => A:a=(n-1)+(n-2)+...2+1 B: a=1+2+...+(n-2)+(n-1) 【n-1个数】=> A+B => 2a=n+...n =>a=n(n-1)/2;赋值次数: int te...

排序算法 - 计数排序【代码】【图】

基本思想计数排序是一种线性排序算法,它利用了一个数组,因为数组下标的增长是线性的,所以它就把自己的元素转换成新开辟数组的下标。可是下标都是非负数啊?数组当中的值有正有负啊。做一个简单的转化就行了:找到数组中最小元素,用元素值减去,这样一来,所有元素对应的下标就求出来了。(实际上感觉像是个映射函数?)下图中保存的是待排序数组:[-1,-5,-6,-2,1,2,8,2,1,8] 然后跟哈希排序的思路一样:这里。直接开辟一个对应...

代码练习(二维数组的定义,字符串加减,子元素的创建及绑定,排序算法)【代码】

<!DOCTYPE> <html><head><meta charset="utf-8"><title>IFE JavaScript Task 01</title></head> <body><ul id="source"><li>北京空气质量:<b>90</b></li><li>上海空气质量:<b>70</b></li><li>天津空气质量:<b>80</b></li><li>广州空气质量:<b>50</b></li><li>深圳空气质量:<b>40</b></li><li>福州空气质量:<b>32</b></li><li>成都空气质量:<b>90</b></li></ul><ul id="resort"><!-- <li>第一名:北京空气质量:<b>90</b></l...

Python实现的几个常用排序算法实例

前段时间为准备百度面试恶补的东西,虽然最后还是被刷了,还是把那几天的“战利品”放点上来,算法一直是自己比较薄弱的地方,以后还要更加努力啊。下面用Python实现了几个常用的排序,如快速排序,选择排序,以及二路并归排序等等。复制代码 代码如下:#encoding=utf-8import randomfrom copy import copy def directInsertSort(seq): """ 直接插入排序 """ size = len(seq) for i in range(1,size): tmp, j = seq[i], i while j...

Java 数组 之 一维数组 选择排序算法【代码】

http://www.verejava.com/?id=16992690199232/* 用选择排序: 思路:1. 将数组中剩下的没有排序的元素中选出最小的一个, 插入已经排序的后面 */ public class SelectSort {public static void sort(int[] arrays){int minIndex;//保存选择最小值的索引for (int i = 0; i < arrays.length-1; i++) {minIndex=i;int minValue=arrays[minIndex];//保存每次循环最小值为循环的第一元素的值for (int j = i; j < arrays.length-1; j++) {...

【技术宅2】插入选择冒泡快速交换排序算法

//插入排序(一维数组)//插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。function insert_sort($arr){ $count=count($arr); for($i=1;$i<$count;$i++){ $tem=$arr[$i];// 获得当前值 $j=$i-1;// 获得当前值的前一个位置 while($arr[$j]>$tem){// 如果当前值小于前一个值...

复习排序算法【代码】【图】

一. 冒泡排序算法1.第一次排序时将序列[0 ~ n - 1]中从前往后进行两个相邻元素的比较,若前者较大则交换,比较n-1次;当第一趟排序结束时,序列最大的元素就被交换到位置n-1上,就如同一个气泡,一步一步往后翻滚,直到最后一位。2.重复步骤1,在第i趟时需要翻滚n-i-1次,每趟决定一个元素的位置,一共需要n-1趟。比如,初始序列: [1, 5, 4, 3, 2]第1趟: [1, 4, 3, 2 ] 5第2趟: [1, 3, 2 ] 4, 5......- (void)bubbleSort:(NSMutable...

排序算法1--插入排序--直接插入排序【代码】

直接插入排序:在日常生活中,经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。例如:一组从小到大排好顺序的数据列{1,2,3,4,5,6,7,9,10},通常称之为有序列,我们用序号1,2,3,…表示数据的位置,欲把一个新的数据8插入到上述序列中。完成这个工作的步骤:①确定数据“8”在原有序列中应该占有的位置序号。数据“8”所处的位置应满足小于或等于该位置右边所有的数据,大于其左边位置上所有的数据。②将这个位置空...

排序算法【代码】

1.冒泡排序import random from timewrap import * @cal_time def bubble_sort(li):for i in range(len(li)-1):for j in range(len(li)-i-1):if li[j] > li[j+1]:li[j],li[j+1]=li[j+1],li[j]@cal_time def bubble_sort_2(li):‘‘‘改良版‘‘‘for i in range(len(li)-1):flag = Falsefor j in range(len(li)-i-1):if li[j] > li[j+1]:li[j],li[j+1]=li[j+1],li[j]flag=Trueifnot flag:returnli = list(range(10000)) random.shuf...

JavaScript版几种常见排序算法【代码】

今天发现一篇文章讲“JavaScript版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html算法描述:* 冒泡排序:最简单,也最慢,貌似长度小于7最优* 插入排序: 比冒泡快,比快速排序和希尔排序慢,较小数据有优势* 快速排序:这是一个非常快的排序方式,V8的sort方法就使用快速排序和插入排序的结合* 希尔排序:在非chrome下数组长度小于1000,希尔排序比快速更快* 系统方法:在forfox...