实现选择排序和冒泡排序及执行流程图解
1、 选择排序:把第一个数与他后面的数进行比较,如果顺序则继续与后面比较,如果逆序则两数交换位置,继续将第一个数与交换位置后的数进行比较,这样就完成了第一轮排序。同理将第二位与其后的数比较,直到数组有序为止。
最好时间复杂度:O(n) 平均时间复杂度:O(n^2) 最坏时间复杂度: O(n^2)
空间复杂度:O(1)
图解:
Java代码实现:
publicclass SelectOrder{
public void sort(int[] a){
int temp= 0;
for(inti=0;i<a.length;i++){
for(intj=I;j<a.length;j++)
if(a[j]<a[i]){
temp =a[i];
a[i] =a[j];
a[j] =temp;
}
}
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
}
2、 冒泡排序:将第一个数与相邻的数进行比较,如果顺序则继续第二个数与后面相邻的书进行比较;如果逆序则交换位置,继续和后面相邻的数进行比较,完成第一趟冒泡排序。同理,直到数组有序。
最好时间复杂度:O(n) 平均时间复杂度:O(n^2) 最坏时间复杂度: O(n^2)
空间复杂度: O(1)
l 如果经过一趟冒泡排序不发生数据交换说明数组原本有序。
图示:
代码实现:
public class BubbleOrder {
public void bubble(int[]a){
int temp=0;
for(int i=0;i<a.length;i++){
for(intj=0;j<a.length-1;j++){
if(a[j]>a[j+1]){
temp = a[j];
a[j]=a[j+1];
a[j+1] =temp;
}
}
}
for(int x=0;x<a.length;x++){
System.out.println(a[x]);
}
}
}
转载自https://blog.csdn.net/chen364567628/article/details/52123561