选择排序
工作原理
选择排序的的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
算法实现(所用语言为java)
public static void selectSort(int [] arr) {
for(int i = 0;i<arr.length-1;i++){
for(int x = i;x<arr.length;x++) {
if(arr[i]>arr[x]) {
int temp = arr[i];
arr[i] = arr[x];
arr[x] = temp;
}
}
}
}
例子讲解
数组:[12,11,34,65,334,23,55]
第一次排序:[12,11,34,65,334,23,55]
第二次排序:[11,12,34,65,334,23,55]
第三次排序:[11,12,34,65,334,23,55]
第四次排序:[11,12,23,65,334,34,55]
第五次排序:[11,12,23,34,334,65,55]
第六次排序:[11,12,23,34,55,334,65]
第七次排序:[11,12,23,34,55,65,334]
冒泡排序
工作原理
比较相邻的元素,如果第一个比第二个大(或者第一个比第二个小),就交换他们两个,对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大(或最小)的数。针对所有的元素重复以上的步骤,除了最后一个,持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码实现(java语言)
public static void buttleSort(int [] arr) {
for(int i = 0;i<arr.length-1;i++) {
for(int x=0;x<arr.length-1-i;x++) {
if(arr[x]>arr[x+1]) {
int temp = arr[x];
arr[x] = arr[x+1];
arr[x+1] = temp;
}
}
}
}
-例子讲解
数组:[12,11,34,65,334,23,55]
第一次排序:[12,11,34,65,334,23,55]
第一次排序:[11,12,34,65,23,55,334]
第一次排序:[11,12,34,23,55,65,334]
第一次排序:[11,12,23,34,55,65,334]
第一次排序:[11,12,23,34,55,65,334]
第一次排序:[11,12,23,34,55,65,334]
第一次排序:[11,12,23,34,55,65,334]
写的相对来说比较简单了,算法实现的代码不是唯一的,所以小编在这里仅提供了相对简单的实现代码,感兴趣的小伙伴,如果不明白,可以给我留言,我一定会回复的哦。
附:完整代码
public class Sort {
public static void main(String[] args) {
int [] arr = {12,11,34,65,334,23,55};
System.out.print("排序前的结果:");
printArray(arr);
selectSort(arr);
System.out.print("选择排序结果:");
printArray(arr);
buttleSort(arr);
System.out.print("冒泡排序结果:");
printArray(arr);
}
//选择排序
public static void selectSort(int [] arr) {
for(int i = 0;i<arr.length-1;i++){
for(int x = i;x<arr.length;x++) {
if(arr[i]>arr[x]) {
swap(arr,i,x);
}
}
}
}
//冒泡排序
public static void buttleSort(int [] arr) {
for(int i = 0;i<arr.length-1;i++) {
for(int x=0;x<arr.length-1-i;x++) {
if(arr[x]>arr[x+1]) {
swap(arr,x,x+1);
}
}
}
}
//交换函数
public static void swap(int [] arr,int x,int y) {
int temp = arr[x];
arr[x]=arr[y];
arr[y]=temp;
}
//遍历函数
public static void printArray(int [] arr) {
for(int i=0;i<arr.length;i++) {
if(i!=arr.length-1) {
System.out.print(arr[i]+",");
}else {
System.out.println(arr[i]);
}
}
}
}