Java选择排序举例分析
导读:本文共1104字符,通常情况下阅读需要4分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 选择排序原理①假设第一个索引处的元素为最小值,和其他值进行比较,如果当前的索引处的元素大于其他某个索引处的值,则假定其他某个索引处的值为最小值,最后找到最小值所在的索引②交换第一个索引处和最小值所在的索引处的值选择排序API设计类名Selection构造方法Selection():创建Selection对象成员方法1.public static void sor... ...
目录
(为您整理了一些要点),点击可以直达。选择排序原理
①假设第一个索引处的元素为最小值,和其他值进行比较,如果当前的索引处的元素大于其他某个索引处的值,则假定其他某个索引处的值为最小值,最后找到最小值所在的索引
②交换第一个索引处和最小值所在的索引处的值
选择排序API设计
类名Selection构造方法Selection():创建Selection对象成员方法1.public static void sort(Comparable[] a):对数组内的元素进行排序
2.private static boolean greater(Comparable v,Comparable w):判断v是否大于w
3.private static void exchange(Comparable[] a,int i,int j):交换a数组中,索引i和索引j处的值
选择排序代码实现
publicclassSelection{//对数组a中的元素进行排序publicstaticvoidsort(Comparable[]a){for(inti=0;i<a.length-2;i++){intminIndex=i;for(intj=i+1;j<a.length;j++){if(greater(a[minIndex],a[j])){minIndex=j;}}exchange(a,i,minIndex);}}privatestaticbooleangreater(Comparablev,Comparablew){returnv.compareTo(w)>0;}privatestaticvoidexchange(Comparable[]a,inti,intj){Comparablet=a[i];a[i]=a[j];a[j]=t;}}classTest{publicstaticvoidmain(String[]args){Integer[]a={4,6,8,7,9,2,10,1};Selection.sort(a);System.out.println(Arrays.toString(a));}}
选择排序的时间复杂度
选择排序使用了双层for循环,外层循环完成了数据交换,内层循环完成了数据比较,所以分别统计:数据比较次数:(N-1)+(N-2)+(N-3)+...+2+1=
((N-1)+1)*(N-1)/2=N^2/2-N/2;
数据交换次数:N-1;
时间复杂度: N^2/2-N/2+(N-1)=N^2/2+N/2-1;
根据大O推导法则,保留最高阶项,去除常数因子,时间复杂度为O(N^2)
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
Java选择排序举例分析的详细内容,希望对您有所帮助,信息来源于网络。