本文目录
- 电脑对数据的排序有哪几种具体的方法
- 几种排序方法的解释
- 排序方法都有哪几种,比如1、2、3甲乙丙丁等
- JAVA中有哪几种常用的排序方法
- Excel排序有几种方法
- c语言排序方法有哪几种
- 几种排序方法
电脑对数据的排序有哪几种具体的方法
五大类方法:插入排序(直接插入排序、希尔排序等)、快速排序(冒泡排序、快速排序)、选择排序(简单选择排序、树形选择排序、堆排序)、归并排序、基数排序
几种排序方法的解释
快速排序,就是拿出一个元素,把比它小的都放在左边,比它大的都放在右边,然后把左右两边的序列继续这样排序。通常拿出的这个元素都是序列中的第一个,因为这样比较简单,不用思考。举例:
4,2,7,5
第一次整理为:2,(4),7,5
冒泡排序就是相邻元素的两个两个比较,第一个第二个比较,大的放在第二个,第二个第三个比较,大的放在第三个……从左到右来一次,就会有一个最大的被找到而放在了最右边,这个过程就像水了的泡泡越上浮越大一样。举例:
4,2,7,5
第一次比较:2,4,7,5
第二次比较:2,4,7,5
第三次比较:2,4,5,7
直接插入排序,就是向有序序列中放入一个元素,先放在最后看看,发现不符合顺序要求,那就放在倒数第二个,看看,还不符合要求……一直找到一个位置,使这些元素有序,那么就实现了排序。举例:
4,2,7,5
第一次,只有一个4,认为是有序的。所以结果是:4,2,7,5
第二次,把2一起考虑进来,发现比前面的4小,所以无序,那么交换他俩,所以是:2,4,7,5
然后继续看,发现2已经到最前面了,那么就结束吧。
第三次,把7一起考虑进来,发现比前面的4大,所以顺序是对的。结果是:2,4,7,5
第四次,把5考虑进来,发现比7小,交换,比前面的4大,ok,位置可以固定了,结果是:2,4,5,7
最后的堆排序麻烦一些,要考虑堆的意义。举小堆来说,好比一摞金子塔(三角形),顶上的总是脚上的两个小,所以最上面尖尖上的元素是最最小的,而最大的一定在最底下一层里,位置不固定的。堆排序就是说,每次取最小的那个(小堆的例子)也就是最上面那个,取出来之后,把其他的元素再整理成小堆,再取最顶上那个是次小的元素,这样一直把所有元素都取出来,取的顺序就是排序的结果了。举例:
。。。3。。。
。。4。。5。
。5。6。9
采取的方案是把最小的和最后一个交换位置,理解为取出了最顶上那个。
。。。9.。。。
。。4.。。5.。
。5。6.。3
注意,3是第一个取出来的,就可以认为它不存在啦,接着整理这个堆,9-4-5这个三角形整理一下,变成:
。。。4.。。。
。。9.。。5.。
。5.。6.。。。
看到左下角的三角形不符合规则,继续整理
。。。4.。。。
。。5.。。5.。
。9.。6.。。。
ok了,所有元素又呈现堆的样子了,每个三角形中,下面的都比上面的大。可以取下一个次小的元素啦。
上面解释的比较模糊,如果有问题,就继续联络吧。
排序方法都有哪几种,比如1、2、3甲乙丙丁等
排序方法一般都就那几种。像冒泡排序,直接插入排序,快速排序,简单选择排序,希尔排序,堆排序。其排序介绍自己看吧。
1、冒泡排序属于稳定排序,是一种借助“交换”进行排序的方法。首先要将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换之,然后比较第二个记录与第三个记录的关键字,以此类推,直至第n-1个记录与第n个记录的关键字进行比较为止,这一过程称为第一趟冒泡排序,其结果使得关键字最大的记录被安置在最后一个记录的位置上;然后进行第二趟冒泡排序,对前N-1个记录进行同样操作;以此类推,直到在一趟排序过程中没有进行过交换记录的操作为止。
2、直接插入排序属于稳定的排序,每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟将待比较的数值与它的前一个数值进行比较,当前一数值比待比较数值大的情况下继续循环比较,依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程,结束该次循环。
3、快速排序属于不稳定排序,是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。假设待排序的序列为{R.[s],R.[s+1],…….,R.[t]},首先任意选取一个记录,然后按下述原则从新排序记录:将关键字较他小的记录都安置在他的位置之前,将所有关键字较他大的记录都安置在他的位置后面。由此可以该“枢轴”记录最后所落的位置i作为分界线,将序列{R[s],R[s+1]…….R[t]}分割成两个子序列{R[s],R[s+1]…..R[i-1]}和{R[i+1]……R[t]},这个过程称作一趟快速排序。一趟快速排序的具体做法是:附设两个指针low和high,它们的初值分别指向数组第一个数据和最后一个数据,将枢轴记录暂存在R的位置上排序过程中只作R[low]或R[high]的单向移动,直至一趟排序结束后再将枢轴记录移至正确位置上。
4、简单选择排序属于不稳定排序,基本思想是,每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录。第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换。共需进行n-1趟比较,直到所有记录排序完成为止。例如:进行第i趟选择时,从当前候选记录中选出关键字最小的k号记录,并和第i个记录进行交换。
5、希尔排序属于不稳定排序,也是一种属插入排序类,它的基本思想是:先将整个待排记录序列分割称为若干个子序列分别进行直接插入排序,待整个序列中记录“基本有序”时,再对全体记录进行一次直接插入排序。希尔排序的一个特点是:子序列的构成不是简单的“逐段分割”,而是将相隔某个“增量”的记录组成一个子序列。
6、堆排序属于不稳定排序,它的基本思想是,先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区,再将关键字最大的记录R(即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1..n-1].keys≤R[n].key;由于交换后新的根R可能违反堆性质,故应将当前无序区R[1..n-1]调整为堆,然后再次将R[1..n-1]中关键字最大的记录R和该区间的最后一个记录R[n-1]交换,由此得到新的无序区R[1..n-2]和有序区R[n-1..n],且仍满足关系R[1..n- 2].keys≤R[n-1..n].keys,同样要将R[1..n-2]调整为堆。直到无序区只有一个元素为止
JAVA中有哪几种常用的排序方法
最主要的是冒泡排序、选择排序、插入排序以及快速排序
1、冒泡排序
冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下排序速度较快。若要排序的数有n个,则需要n-1轮排序,第j轮排序中,从第一个数开始,相邻两数比较,若不符合所要求的顺序,则交换两者的位置;直到第n+1-j个数为止,第一个数与第二个数比较,第二个数与第三个数比较,......,第n-j个与第n+1-j个比较,共比较n-1次。此时第n+1-j个位置上的数已经按要求排好,所以不参加以后的比较和交换操作。
例如:第一轮排序:第一个数与第二个数进行比较,若不符合要求的顺序,则交换两者的位置,否则继续进行二个数与第三个数比较......。直到完成第n-1个数与第n个数的比较。此时第n个位置上的数已经按要求排好,它不参与以后的比较和交换操作;第二轮排序:第一个数与第二个数进行比较,......直到完成第n-2个数与第n-1个数的比较;......第n-1轮排序:第一个数与第二个数进行比较,若符合所要求的顺序,则结束冒泡法排序;若不符合要求的顺序,则交换两者的位置,然后结束冒泡法排序。
共n-1轮排序处理,第j轮进行n-j次比较和至多n-j次交换。
从以上排序过程可以看出,较大的数像气泡一样向上冒,而较小的数往下沉,故称冒泡法。
public void bubbleSort(int a)
{
int n = a.length;
for(int i=0;i《n-1;i++)
{
for(int j=0;j《n-i-1;j++)
{
if(a[j] 》 a[j+1])
{
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
2、选择排序
选择法的原理是先将第一个数与后面的每一个数依次比较,不断将将小的赋给第一个数,从而找出最小的,然后第二个数与后面的每一个数依次比较,从而找出第二小的,然后第三个数与后面的每一个数依次比较,从而找出第三小的.....直到找到最后一个数。
public void sort(int x)
{
int n=x.length;
int k,t;
for(int i=0;i《n-1;i++)
{
k=i;
for(int j=i+1;j=n;j++)
{
if(x[j]》x[k])k=j;
if(k!=i)
{
t=x[i];
x[i]=x[k];
x[k]=t;
}
}
}
}
3、插入排序
插入排序的原理是对数组中的第i个元素,认为它前面的i-1个已经排序好,然后将它插入到前面的i-1个元素中。插入排序对少量元素的排序较为有效.
public void sort(int obj)
{
for(int j=1;j《obj.length;j++)
{
int key=obj[j];
int i=j-1;
while(i》=0&&obj[i]》key)
{
obj[i+1]=obj[i];
i--;
}
obj[i+1]=key;
}
}
4、快速排序
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此大道整个数据变成有序序列。
public void quickSort(int obj,int low,int high)
{
int i=low;
int j=high;
int keyValue=obj[i];
while(i《j)
{
int temp=0;
while(i《j&&obj[j]》=keyValue)
{
j=j-1;
}
temp=obj[j];
obj[j]=obj[i];
obj[i]=temp;
while(i《j&&obj[i]《=keyValue)
{
i=i+1;
}
temp=obj[j];
obj[j]=ojb[i];
obj[i]=temp;
}
obj[i]=keyValue;
if(low《i-1)
{
quickSort(obj,low,i-1);
}
if(high》i+1)
{
quickSort(obj,i+1,high);
}
}
Excel排序有几种方法
方法一:日期按时间排序
进入到操作界面,如图所示,首先选中需要排序的单元格区域,在选中开始菜单上的“数据”,至“排序”选项卡,在弹出的“自定义排序次序”中找到日期的排序方式即可,然后在点击确定即可完成操作,
相关教程:excel输入日期
现在我们来预览排序完成后的效果吧。
方法二:数据按住数字大小排序
进入到操作几面,小编随便输入几个数字
选中需要排序的单元格,在选中开始菜单上的“数据”,至“排序”选项卡,然后在点击“选项”命令,弹出“排序选项”,然后直接点击“按列排序”方式,即可这样单元格里面的数字就是按列小到大的排序了。
方法三:名称按字母来排序
小编就随便输入几个名字。同样按照上面的方式,进入到排序选项窗口
然后在“排序选项”上选择“按字母排序”即可完成操作了
你可以还想了解:excel中如何拆分和冻结单元格
方法四:当然,这几种方式还是比较简单的,常用的几种方法。有的时候需要按别的方式排序的话,就可以再“自定义选项”中添加排序方式即可
以上就是Excel表格排序的几种方法。所有的排序要先选择要排序的内容,要包括每列表头,然后点“数据
-
排序
”在对话框里选择“主关键字”、或次关键字,再选择排序顺序,排序方式按从大到小或从小到大。
c语言排序方法有哪几种
C,语言常用的排序方法有很多种。比如说冒泡排序,直接交换排序,直接选择排序,直接插入排序,二分插入排序,快速排序,归并排序,二叉排序树排序,小学生排序,等等。
几种排序方法
这两天复习了一下排序方面的知识,现将目前比较常见的整理一下。选择排序选择排序的思想是首先先找到序列中最大元素并将它与序列中最后一个元素交换,然后找下一个最大元素并与倒数第二个元素交换,依次类推。此排序很简单,这不做多说,代码实现如下:View Code插入排序算法流程: 1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 3. 如果该元素(已排序)大于新元素,将该元素移到下一位置 4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 5. 将新元素插入到下一位置中 6. 重复步骤2View Code冒泡排序依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。View Code合并排序 在介绍合并排序之前,首先介绍下递归设计的技术,称为分治法。分治法的核心思想是:当问题比较小时,直接解决。当问题比较大时,将问题分为两个较小的子问题,每个子问题约为原来的一半。使用递归调用解决每个子问题。递归调用结束后,常常需要额外的处理,将较小的问题的结果合并,得到较大的问题的答案。 合并排序算法在接近数组中间的位置划分数组,然后使用递归运算对两个一半元素构成的数组进行排序,最后将两个子数组进行合并,形成一个新的已排好序的数组。 代码如下:View Code快速排序 快速排序与合并排序有着很多相似性。将要排序的数组分成两个子数组,通过两次递归调用分别对两个数组进行排序,再将已经排好序的两个数组合并成一个独立的有序数组。但是,将数组一分为二的做法比合并排序中使用的简单方法复杂的多。它需要将所有小于或者等于基准元素的元素放置到基准元素前面的位置,将大于基准的元素放置到基准后面的位置。 View Code堆排序 View Code 大概常用的几种排序就这几种,希望大家多多指正。