#排序

经典数组排序方法------选择排序法,冒泡排序法

一:使用选择排序法,冒泡排序法对一维数组进行排序,截图/*选择排序的个人理解:第一遍内循环,选出其中最大的值,得到值和下标外层循环将最大的值的位置和数组的第一个位置交换从数组的第二个位置开始第二遍筛选将其中最大的值的位置和数组的第二个位置交换直到筛选完数组*//*冒泡排序法的个人理解第一次内循环将相邻的两个数的较大值放...

对象的比较与排序:IComparable和IComparer接口

IComparable和ICompare接口是.netframework中比较对象的标准方式,这两个接口提供一个返回值类似(大于0等于0小于0)的比较方法,二者区别如下:1.IComparable在要比较的对象的类中实现,可以比较该对象和另一个对象。2.IComparer在一个单独的类中实现...

当list做gridview的数据源时,可以用泛型来对list进行排序

当list做gridview的数据源时,可以用泛型来对list进行排序,代码如下vartemps=fromtinlistorderbyt.paymentAmountdescendingselectt;GridView1.DataSource=temps.ToArray();GridView1.DataBind();...

快速排序&基数排序

//快速排序#include<stdio.h>voidQuickSort(intR[],intlow,inthigh){inti=low,j=high;intpivot;if(low<high){pivot=R[i];while(i!=j){while(i!=j&&R[j]>pi...
代码星球 ·2020-04-06

选择排序&冒泡排序

//直接选择排序#include<stdio.h>voidSelectionSort(intarr[],intlen){inti,j;intk,min;inttemp;for(i=0;i<len-1;i++){min=arr[i];//每趟排序都把无序区第一个数设置为最小k=i;for(j=i+1;j...
代码星球 ·2020-04-06

算法8-排序-基数排序

基数排序与本系列前面讲解的七种排序方法都不同,它不需要比较关键字的大小。它是根据关键字中各位的值,通过对排序的N个元素进行若干趟“分配”与“收集”来实现排序的。  不妨通过一个具体的实例来展示一下,基数排序是如何进行的。 设有一个初始序列为:...
代码星球 ·2020-04-06

算法7-排序-归并排序

将待排序序列R[0...n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。综上可知:归并排序其实要做两件事:(1)“分解”—&mdash...
代码星球 ·2020-04-06

算法6-排序-快速排序

(1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。(2)实例:(3)java实现publicclassquickSort{inta[]={49...
代码星球 ·2020-04-06

算法5-排序-冒泡排序

(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)实例:3)用java实现publicclassbubbleSort{publicbubbleSort...
代码星球 ·2020-04-06

算法4-排序-堆排序

在介绍堆排序之前,首先需要说明一下,堆是个什么玩意儿。堆是一棵顺序存储的完全二叉树。其中每个结点的关键字都不大于其孩子结点的关键字,这样的堆称为小根堆。其中每个结点的关键字都不小于其孩子结点的关键字,这样的堆称为大根堆。举例来说,对于n个元素的序列{R0, R1,..., Rn}当且仅当满足下列关系...
代码星球 ·2020-04-06

算法3-排序-简单选择排序

基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。选择排序的思想其实和冒泡排序有点类似,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。举个...

算法笔记2-排序-希尔排序(最小增量排序)

基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。publicclassshellSort{publics...

算法笔记1-排序-插入排序

插入排序的工作方式就像排序一手扑克牌。开始时,我们的左手为空,然后,我们每次从桌上拿走一张牌并将它插入到左手中正确的位置。为了找到正确的位置,我们总是从右到左将它与左手中的每张牌进行比较。这样,左手中的牌始终是排好序的,直到最后一张。 插入排序的时间复杂度是O(n^2),因此,对于小规模问题,能有效解决,但是...

归并排序Merge Sort

1//C语言实现23voidmergeSort(intarray[],intfirst,intlast)4{5if(first<last)//拆分数列中元素只剩下两个的时候,不再拆分6{7intmid=(first+last)/2;8//递归拆分数组9mergeSort(array,first,mid);10me...
代码星球 ·2020-04-06

插入排序Insertion Sort

插入排序:将一个数据插入到一个已经排好序的有序数据序列中,从而得到一个新的、个数+1的有序数列;插入排序适用于少量数据排序,时间复杂度为O(n^2)。实现思路:1.对于一个无序数组,选取第一个元素,看作一个有序数组     2.从第二个元素开始,插入到前面的有序数列     3.插入时,从有序数列的倒序开始,进行大小判...
代码星球 ·2020-04-06
首页上一页...4546474849...下一页尾页