Java和C#一共有几种排序方法

如题所述

排序方法一般都就那几种。像冒泡排序,直接插入排序,快速排序,简单选择排序,希尔排序,堆排序。其排序介绍自己看吧。
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[0]的位置上排序过程中只作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[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且满足R[1..n-1].keys≤R[n].key;由于交换后新的根R[1]可能违反堆性质,故应将当前无序区R[1..n-1]调整为堆,然后再次将R[1..n-1]中关键字最大的记录R[1]和该区间的最后一个记录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]调整为堆。直到无序区只有一个元素为止。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-08
排序方法?这个跟语言无关,算法的东西,用什么语言都可以实现,只是该语言对特定算法是否有直接支持的区别而已
第2个回答  2011-10-08
排序算法跟实现语言没有特定的关系吧。
第3个回答  2011-10-13
没关系

Java和C#一共有几种排序方法
1、冒泡排序属于稳定排序,是一种借助“交换”进行排序的方法。首先要将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序,则将两个记录交换之,然后比较第二个记录与第三个记录的关键字,以此类推,直至第n-1个记录与第n个记录的关键字进行比较为止,这一过程称为第一趟冒泡排序,其结果...

...C\/C++\/Java\/C#\/VB.NET)写出任意一种你所知的排序算法(比如:冒泡排序...
void BubbleSort(int a[], const int first, const int last);\/\/冒泡排序 void InsertSort(int a[], const int first, const int last);\/\/插入排序 void SelectSort(int a[], const int first, const int last);\/\/选择排序 void MergeSort(int a[], const int p, const int r);\/\/...

Java 和 C# 中 substring 方法
在Java和C#编程语言中,substring方法用于提取字符串的子串。方法的使用在两个语言中具有相似的语法,但参数解释和行为存在差异。当仅提供一个参数时,Java和C#的substring方法执行相同的操作,即从指定索引开始获取字符串中的所有剩余字符。然而,当两个参数一同使用时,两个语言的行为就有所不同。在Java中...

...随机产生1000个整数存入数组中,利用两种排序方法将数据排序,计算出...
} 二 冒泡排序 这可能是最简单的排序算法了,算法思想是每次从数组末端开始比较相邻两元素,把第i小的冒泡到数组的第i个位置。i从0一直到N-1从而完成排序。(当然也可以从数组开始端开始比较相邻两元素,把第i大的冒泡到数组的第N-i个位置。i从0一直到N-1从而完成排序。)package algorithms;\/ aut...

C#与Java有什么区别啊?
5.注释:Java比c#少一种"\/\/\/"的文档注释。6.输出:c#有三种方式输出:Cosole.WriteLine(); Cosole.WriteLine(要输出的值); Cosole.WriteLine("格式字符串",变量列表); 前两种的用法与Java中的ystem.out.println()方法的用法相同,第三种方式是根据占位符输出的,比Java更方便了。7.控制流语句...

c与java哪个好(java和c哪个好学一点)
完完全全没有必要。C是编译型的语言,自然比Java难。Java和C#只是混合型语言,介于解释型语言和编译型语言之间。语言学习的难度从小到大大致分为:脚本语言(HTML,Javascript,JScript)解释型语言(Perl,Python,REBOL,Ruby)混合型语言(Java,C#)编译型语言(C,C++Delphi)汇编语言 C语言和Java是完全两个...

Java的关键字和C#的关键字有啥区别吗?
输出:c#有三种方式输出:Cosole.WriteLine(); Cosole.WriteLine(要输出的值); Cosole.WriteLine("格式字符串",变量列表); 前两种的用法与Java中的ystem.out.println()方法的用法相同,第三种方式是根据占位符输出的,比Java更方便了 控制流语句:c#跟Java类似,还有c#中的switch如果case后面有内容必须...

java和asp.net
我认为更确切的说法是JAVA和.NET的比较,而C#是.NET阵营里的得力干将,和VB.NET一起成为微软.NET战略的左右手。 JAVA和C#比较的文章网上的不计其数。其中我看到.NET总设计师之一,C#之父Anders Hejlsberg的一次采访录最为有份量,他从设计的高度和实现的技术细节上阐述了两种技术的主要异同点,比如.NET的Exception ...

C#中有没有和java中equalsIgnoreCase一样的方法来比较字符串?_百度...
s21.string.Equals(string1, string2, StringComparison.OrdinalIgnoreCase)这就相当于java的equalsIgnoreCase() 但它是静态方法 并不由要比较的字符串调用,避免了null异常2.s1.ToLower()==s2.ToLower() 这个方法可能引发null异常 必须保证两个字符串都不为空 而且效率较低 ...

C#和java的Substring有区别吗?
java是startIndex,endIndex,而C#是startIndex,length 是最大区别 ___str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str;str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex开始至endIndex结束时的字符串,并将其赋值给str;_...

相似回答
大家正在搜