c#利用快速排序法对给定的一个整数数组进行排序

c#利用快速排序法对给定的一个整数数组进行排序,第1张

百度人才多啊,这个问题两个人都对,但楼主都不会选最佳答案的,因为题目同读清楚!

先发一些牢骚:拿C#来做排序算法,就算算法再怎么好也不会得到好的性能。一般研究算法时最好在C/C++中,用这个研究算法没有多大的意义。

再说概念:快速排序法是一种不稳定排序算法,一楼用冒泡算法进行排序的,二楼用的类库直接排序的,开发上是快速一点,但楼主可能只是想研究一下快速排序算法而已。

算法特点:先选定一个关键词,比关键词大的放在关键词的右边,否则放在关键词的左边,这为第一次排序,然后用递归法分别将左边与右边的再进行同样排序。

public void QuickSort(int[] array,int low,int high)

{

if(low>= high) return;

int key = array[low] ; //假定关键词

int i = low,j=high;

while(i<j)

{

while(key < array[j]) j--; //找到从后边第一个小于关键词的元素

while(array[i]<key) i++; //找到从前边第一个大于关系词的元素

if(i>=j) break; //关键词已经排好序,跳出

//没有排好序的要进行交易,将一个小于关键词的前边一个大于关键词的值与后边一个小于关键词的值进行交换

int temp = array[i];

array[i] = array[j];

array[j] = temp;

//继续循环,直到i>=j

}//该次保证了第一次循环,出现两前半部分大于关键词,后半部分小于关键词的情况。

QuickSort(array,low,j); //排序前半段

QuickSort(array,j+1,high); //排序后半段

}

可以看出实现了分段递归的方式再进行调用。

程序说明,因为前边有low>=high的判断的,其实与while(i<j)是重复的。所以该条件中的i<j可以改为true;而循环体中的i>=j bread;也能保证跳出。

设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。一趟快速排序的算法是:

1)设置两个变量I、J,排序开始的时候:I=0,J=N-1;

2)以第一个数组元素作为关键数据,赋值给X,即 X=A[0];

3)从J开始向前搜索,即由后开始向前搜索(J=J-1),找到第一个小于X的值,让该值与X交换(找到就行找到后i大小不变);

4)从I开始向后搜索,即由前开始向后搜索(I=I+1),找到第一个大于X的值,让该值与X交换(找到就行找到后j大小不变);

5)重复第3、4步,直到 I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1。找到并交换的时候i, j指针位置不变。另外当i=j这过程一定正好是i+或j+完成的最后另循环结束)

1)的排序顺序是

70、75、82、90、23、16、10、68

68、75、82、90、23、16、10、70

68、70、82、90、23、16、10、75

68、10、82、90、23、16、70、75

68、10、70、90、23、16、82、75

68、10、16、90、23、70、82、75

68、10、16、70、23、90、82、75

68、10、16、23、70、90、82、75

第一趟划分完成。。其他自己看去

这种题目记好算法就会了。。

随便一个程序员都会写快速排序。

1、快速排序是一种经典的排序算法,广泛应用于计算机科学领域,在学习计算机科学的过程中,所有程序员都会接触并学习到快速排序算法,了解其基本原理和实现方式。

2、快速排序算法简单易懂,只需要对数组进行递归分治,通过交换元素的位置来完成排序,很容易理解和实现。

你的整个main函数,其实只是把小于m的数放在了左边,大于m的数放在了右边。

只是比较了一趟。这是最大的问题。

然后你应该把0到mid跟mid到99之间再进行快排,这样递归下去,才能算是一个完整的排序。

推荐在网上查找一个完整的程序,你就会发现自己的问题了。

以上就是关于c#利用快速排序法对给定的一个整数数组进行排序全部的内容,包括:c#利用快速排序法对给定的一个整数数组进行排序、对下面4个序列快速排序、随便一个程序员都会写快速排序吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9337550.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存