首页 > 编程知识 正文

快速排序算法代码,冒泡排序的详细过程

时间:2023-05-06 00:46:02 阅读:147707 作者:2282

直接选择排序简述工作原理,实现对代码稳定性时间复杂度的分析

简单地叙述

“部分选择排序”(Selection sort )是一种简单直观的排序算法。

行为原理是从要排序的数据元素中每次选择一个最小(或最大)元素,并将其存储在序列的开头,直到所有要排序的数据元素都排列好。 选择排序是一种不稳定的排序方法。

代码//直接选择排序publicstaticvoidselectsort (comparable [ ] arr ) { for } inti=0; i arr.length - 1; I ) { int min=i; for(ints=I; s arr.length; s () if ) arr[min].comPareto ) arr[s] )0) ) { min=s; }swap(arr,I,min ); for(ints=0; s arr.length; s ) (system.out.print ) arr[s] ' ); } System.out.println (; } publicstaticvoidswap (comparable [ ] arr,int i,int s ) ) { Comparable temp=arr[i]; arr[i]=arr[s]; arr[s]=temp; }稳定性假设要排序的记录序列中存在多个具有相同关键字的记录。 如果进行了排序,这些记录的相对顺序不会改变。 也就是说,在原始序列中,r[i]=r[j],r[i]在r[j]之前,而在已排序序列中,r[i]在r[j]之前,否则称为不稳定。

选择排序就是在每个位置选择当前元素最小的。 例如,在第一个位置选择最小的,在剩下的要素中选择第二个要素中第二小的,依次类推到第n-1个要素。 第n个要素可以不选择。 因为只剩下一个最大的要素。 那么,如果某个元素小于当前元素,且该小元素出现在与当前元素相等的元素之后,则交换后的稳定性将被破坏。 通过比较拗音可知,例如数组58529在选择前一个要素5时会与2对换,在原数组中会破坏两个5的相对前后顺序,因此选择排序是不稳定的排序算法。

时间复杂度分析第1次内循环比较N - 1次,然后N-2次,N-3次,……,最后一次内循环比较1次。

比较的次数为(N - 1 ) ) N - 2 )… 1,若求出等差数列和,则(N - 1 )1) n/2=n^2/2。

舍去最高项系数,其时间复杂度为o(n^2)。

选择排序和气泡排序的时间复杂度相同,但实际上,通过选择排序进行的交换操作较少,最多会发生N - 1次的交换。

泡沫排序最坏的情况是发生n ^2/2交换操作。 从这个意义上说,交换排序的性能略优于冒泡排序。

而且,交换排序比冒泡排序的思想更直观。

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