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实现了几个常用的排序,如快速排序,选择排序,以及二路并归排序等等。复制代码 代码如下:#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...
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++) {...
//插入排序(一维数组)//插入排序(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,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版几种常见排序算法”,看着不错,推荐一下原文:http://www.w3cfuns.com/blog-5456021-5404137.html算法描述:* 冒泡排序:最简单,也最慢,貌似长度小于7最优* 插入排序: 比冒泡快,比快速排序和希尔排序慢,较小数据有优势* 快速排序:这是一个非常快的排序方式,V8的sort方法就使用快速排序和插入排序的结合* 希尔排序:在非chrome下数组长度小于1000,希尔排序比快速更快* 系统方法:在forfox...
- (NSMutableArray *)zuHeSuanFa:(NSMutableArray *)array chooseCount:(int)m {int n = (int)[array count];if (m > n){return nil;}// NSLog(@"从1到%d中取%d个数的组合。。。",n,m); NSMutableArray *allChooseArray = [[NSMutableArray alloc] init];NSMutableArray *retArray = [array copy];// (1,1,1,0,0)for(int i=0;i < n;i++){if (i < m){[array replaceObjectAtIndex:i withObject:@"1"];}else{[array replaceObj...
在看数据结构导论的时候,你会不会感觉算法有点多,这么多算法什么时候能够记住?如果你这样想就错了。米老师曾说:“记是记不住的。”看的多了也就记住了。当然还有另外一种思考模式,以自己的理解去学习,知其本质,抓住核心。在此对排序这一块做了一个小小的总结: 总结:其实很多时候我们根本不用去记,抓住核心本质转换成自己的理解方式也就记住了,就像是两个数交换,用一个变量作为中转站,依次交换值就可以。原文:http...
这一系列博客的特点就是——给出每趟排序的结果 本来想着好好写一下过程,弄个图片什么的,不过觉得网上的解析太多了,都比较好。《算法导论》上面那个比喻,比做打扑克牌的插入新牌,就比较形象。所以这些博客就算是对自己的总结吧。#include <stdio.h>void InsertSort(int *m, int n) {int i,j,temp;for(i=1;i<n;i++){temp=m[i];j=i-1;while(j>=0 && temp<m[j]){m[j+1]=m[j];j--;}m[j+1]=temp; for(int t=0;t<10;t++)print...
本文由 伯乐在线 - smilesisi 翻译自 Kanasz Robert。未经许可,禁止转载!欢迎加入:技术翻译小组,或分享原创到伯乐头条。在这篇文章中,我会向大家展示一些排序算法的可视化过程。我还写了一个工具,大家可对比查看某两种排序算法。下载源码 – 75.7 KB下载示例 – 27.1 KB引言首先,我认为是最重要的是要理解什么是“排序算法”。根据维基百科,排序算法(Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一...
前言面试以及考试过程中必会出现一道排序算法面试题,为了加深对排序算法的理解,在此我对各种排序算法做个总结归纳。1、冒泡排序算法(BubbleSort)1.1 算法描述(1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。(2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。(3)针对所有的元素重复以上的步骤,除了最后一个。(4)持续每次对越来越少的元素重复上面的步...