黑马程序员技术交流社区
标题: 经典排序算法(Java版) [打印本页]
作者: 张先庆 时间: 2013-7-18 22:14
标题: 经典排序算法(Java版)
本帖最后由 杨兴庭 于 2013-7-21 13:46 编辑
经典排序算法(Java版)
1、冒泡排序 Bubble Sort
最简单的排序方法是冒泡排序方法。这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮。在冒泡排序算法中我们要对这个“气泡”序列处理若干遍。所谓一遍处理,就是自底向上检查一遍这个序列,并时刻注意两个相邻的元素的顺序是否正确。如果发现两个相邻元素的顺序不对,即“轻”的元素在下面,就交换它们的位置。显然,处理一遍之后,“最轻”的元素就浮到了最高位置;处理二遍之后,“次轻”的元素就浮到了次高位置。在作第二遍处理时,由于最高位置上的元素已是“最轻”元素,所以不必检查。一般地,第i遍处理时,不必检查第i高位置以上的元素,因为经过前面i-1遍的处理,它们已正确地排好序。这个算法可实现如下。
算法如下:
void doBubbleSort(int[] src)
{
int len=src.length;
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++)
{
int temp;
if(src>src[j])
{
temp=src[j];
src[j]=src;
src=temp;
}
}
printResult(i,src);
}
}
2、选择排序 Selection Sort
选择排序的基本思想是:对待排序的记录序列进行n-1遍的处理,第1遍处理是将L[1..n]中最小者与L[1]交换位置,第2遍处理是将L[2..n]中最小者与L[2]交换位置,......,第i遍处理是将L[i..n]中最小者与L交换位置。这样,经过i遍处理之后,前i个记录的位置就已经按从小到大的顺序排列好了。
当然,实际操作时,也可以根据需要,通过从待排序的记录中选择最大者与其首记录交换位置,按从大到小的顺序进行排序处理。
算法如下:
void doChooseSort(int[] src)
{
int len=src.length;
int temp;
for(int i=0;i<len;i++)
{
temp=src;
int j;
int samllestLocation=i;//最小数的下标
for(j=i+1;j<len;j++)
{
if(src[j]<temp)
{
temp=src[j];//取出最小值
samllestLocation=j;//取出最小值所在下标
}
}
src[samllestLocation]=src;
src=temp;
printResult(i,src);
}
}
作者: 肥猫 时间: 2013-7-19 07:49
来点有用的啊~~比如速度最快的希尔排序啊,快速排序之类的.
作者: 杨兴庭 时间: 2013-7-21 13:46
楼主您好。我已将您的帖子该为感言贴,,对此如有疑问请及时向我反馈。。。。。
作者: zhiweixia 时间: 2015-9-5 12:11
看看了,学习了,呵呵
作者: zhiweixia 时间: 2015-9-5 12:15
再来一次吧啊哈
作者: zhiweixia 时间: 2015-9-5 12:23
希尔排序啊
作者: zhiweixia 时间: 2015-9-5 12:24
希尔排序啊123
作者: 哈哈我赢了 时间: 2015-10-4 11:10
学习一下。
作者: ll5353231 时间: 2015-10-4 13:35
看了了解了谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |