首页 > 编程知识 正文

java排序算法,java递归算法经典实例

时间:2023-05-05 08:14:45 阅读:164297 作者:820

听其自然

2020年6月24日星期三

《啊哈算法》中说明的快速排序算法怀疑以前的快速排序算法是否真的很混乱。

看了百度“java快速排序”,出现的很多博客都和《啊哈算法》的走同样的路,我的疑问没有解开,有点失望。

很久以前就有人才从评论区出来,很有趣。 我看了这些博客的评论区域,果然是悲鸣。 好像只有我一个人感到困惑呢。

于是,我翻箱倒柜地找了以前课上做的笔记,用java说明了以前的算法。 总之以老师说的话为基准,以我过去学过的东西为基准吧。

1、快速排序思想快速排序的核心是分割,决定一个作为分割基准的数字,将原排列分割成两部分,左边的小于基准数字,右边的大于基准数字。

然后递归迭代,分别快速排序左部和右部两部分,知道整个数组很有序。

2、时间复杂度平均时间复杂度在o(n*logn )序列无序时良好

最差的时间复杂度在o(n^2)序列有序且逆序时最差

33558 www.Sina.com/public class quick sort {

公共int partition (int [ ] a,int low,int high ) {

//选择基准元素

int pivot=a[low];

wile(lowhigh ) (

wile(lowhigha[high]=pivot )--high; //首先从右到左,找出小于基准要素的第一个,将该要素填入左哨兵的位置

a[low]=a[high];

wile(lowhigha[low]=pivot ) low; //再从左到右,找出大于基准要素的第一个,将该要素填入右哨兵的位置

a[high]=a[low]; ()继续走,直到遇到右哨兵,周期结束

}

a[low]=pivot; //将基准要素置于相遇的位置

返回低;

}

公共void quick sort (int [ ] a,int low,int high ) {

if (低高) {

intpivotpos=partition(a,low,high );

quicksort(a,low,pivotpos-1 );

快速引导(a,pivotpos 1,high );

}

}

publicstaticvoidmain (string [ ] args ) {

int [ ] a={ 2,1,3,5,4,7,6 };

快速启动快速启动=new快速启动(;

quicksort.quicksort(a,0,6 )

for(intI=0; ia.length; I ) {

system.out.print(a[I] ' );

}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。