排序之直接插入排序

  本篇博客是在伍迷兄的博客基础上进行的,其博客地址点击就可以进去,里面好博客很多,我的排序算法都来自于此;一些数据结构方面的概念我就不多阐述了,伍迷兄的博客中都有详细讲解,而我写这些博客只是记录自己学习过程,加入了一些自己的理解,同时也希望给别人提供帮助。  相信大家都玩过扑克,特别是斗地主;从你摸完第一张牌开始,之后的每摸的一张牌都需要与手中已有的牌进行比较,来确定这张牌放的位置,不管你们是否有这个习惯,我是有这个习惯的,就是从左到右,牌是从小到大的;这个摸牌的过程其实就是直接插入排序的一个过程;这时候有人就说了:我摸牌都不看牌的,等摸完了,再去整理牌,其实你这是找抽的节奏呀,别人都叫地主了,你还在整理牌!你说你是不是找抽。  开个玩笑,闲话不多扯,进入下面的正题。  直接插入排序就是将一个记录插入到已经排好序的有序表中,从而得到一个新的有序表;最初的状态则是将整个序列看成是由第1个元素组成的有序序列加第2个元素至第n个元素的无序序列,这个两个序列组成的,如下图:将第2个无序列表中的元素逐个插入到第1个有序序列中,最终使得整个序列有序,如下图:  代码实现语言采用java,没学过j...
IT猿 IT猿·2020-03-27

希尔排序

转自:http://blog.csdn.net/morewindows/article/details/6668714希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。 以n=10的一个数组49,38,65,97,26,13,27,49,55,4为例第一次gap=10/2=549  38  65  97  26  13  27  49  55  41A   ...
IT猿 IT猿·2023-05-06

二分法排序

二分法排序算法思想简单描述:在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。二分法没有排序,只有查找。所以当找到要插入的位置时。移动必须从最后一个记录开始,向后移动一位,再移动倒数第2位,直到要插入的位置的记录移后一位。二分插入排序是稳定的,平均时间O(n2)#include<iostream>usingnamespacestd;voidBinarySearch(inta[],intlen){inti;intfirst;intlast;intiSave;for(i=1;i<len;i++){first=0;last=i-1;iSave=a[i];while(first<=last){if(a[i]>=a[(first+last)/2]){first=(first+last)/2+1;}else{last=(first+last)/2-1;}}for(intj=i-1...
IT猿 IT猿·2023-05-06

[算法天天练]选择排序

选择排序 #include<iostream>usingnamespacestd;voidSelectSort(intdata[],intilen){inttemp;intiIndex=0;for(inti=0;i<ilen-1;i++){iIndex=i;for(intj=i+1;j<ilen;j++){if(data[j]<data[iIndex]){iIndex=j;}}if(iIndex!=i){temp=data[i];data[i]=data[iIndex];data[iIndex]=temp;}}}voidPRINT(intdata[],intilen){for(inti=0;i<ilen;i++){cout<<data[i]<<"";}cout<<endl;}intmain(){intdata[]={2,1,5,4,9,0,9,-1,99,3};intilen=sizeof(data)/sizeof(data[0]);PRINT(data,ilen);SelectSort(data,ile...

冒泡 [Python]

冒泡PythonclassBubbleSort:def__init__(self):self.initArr()definitArr(self):self.arrInfo=[60,61,27,91,92,44,13,20,24,13]defbubbleSortFromStartToEnd(self):length=len(self.arrInfo)foriinrange(length):forjinrange(length-i-1):ifself.arrInfo[j]>self.arrInfo[j+1]:temp=self.arrInfo[j]self.arrInfo[j]=self.arrInfo[j+1]self.arrInfo[j+1]=tempdefbubbleSortFromEndToStart(self):length=len(self.arrInfo)foriinrange(0,length):forjinrange(length-1,i,-1):ifself.arrInfo[j]<self.arrInfo[j-1]:temp=self.arrInfo[j]s...
IT猿 IT猿·2023-05-06

php array_multisort对数据库结果多个字段进行排序

phparray_multisort对数据库结果多个字段进行排序$data数组中的每个单元表示一个表中的一行。这是典型的数据库记录的数据集合。例子中的数据如下:volume|edition-------+--------67|286|185|698|286|667|7数据全都存放在名为data的数组中。这通常是通过循环从数据库取得的结果,例如mysql_fetch_assoc()。<?php$data[]=array('volume'=>67,'edition'=>2);$data[]=array('volume'=>86,'edition'=>1);$data[]=array('volume'=>85,'edition'=>6);$data[]=array('volume'=>98,'edition'=>2);$data[]=array('volume'=>86,'edition'=>6);$data[]=array('volume'=>67,'edition'=>7);?>本例中将把volume降序...

NSMutable sort排序

Eitheryouimplementacompare-methodforyourobject:-(NSComparisonResult)compare:(Person*)otherObject{return[self.birthDatecompare:otherObject.birthDate];}NSArray*sortedArray;sortedArray=[drinkDetailssortedArrayUsingSelector:@selector(compare:)];orusuallyevenbetter:NSSortDescriptor*sortDescriptor;sortDescriptor=[[[NSSortDescriptoralloc]initWithKey:@"birthDate"ascending:YES]autorelease];NSArray*sortDescriptors=[NSArrayarrayWithObject:sortDescriptor];NSArray*sortedArray;sortedArray=[drinkDetailssortedA...
ymnets ymnets·2023-05-06

php排序集合

如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作。经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用。PHP提供了一些适合多种数组的排序函数,这些函数允许你在数组内部对元素进行排列,也允许用很多不同的方法对它们进行重新排序。在这篇文章中我们将讨论该排序中最重要的几个函数。简单排序首先,让我们来看看最简单的情况:将一个数组元素从低到高进行简单排序,这个函数既可以按数字大小排列也可以按字母顺序排列。PHP的sort()函数实现了这个功能,如ListingA所示:ListingA<?phpÂ$data=array(5,8,1,7,2);Âsort($data);Âprint_r($data);Â?>输出结果如下所示:Array([0]=>1[1]=>2[2]=>5[3]=>7[4]=>8)也能使用rsort()函数进行排序,它的结果与前面所使用的sor...
ymnets ymnets·2023-05-06
首页上一页...5758596061下一页尾页