如何将冒泡排序、选择排序和插入排序结合成一个高效的排序算法?

2026-04-15 09:488阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计536个文字,预计阅读时间需要3分钟。

如何将冒泡排序、选择排序和插入排序结合成一个高效的排序算法?

1.冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端 /* * 冒泡排序 */ public class BubbleSort {   public static void main(String[] args) {     int[] arr={6,3,8,2,9,1};     System.out.println("排序前数组为:");     for(int num:arr){       System.out.print(num+" ");     }     for(int i=0;i arr[j+1]){           int temp=arr[j];           arr[j]=arr[j+1];           arr[j+1]=temp;         }       }     }     System.out.println();     System.out.println("排序后的数组为:");     for(int num:arr){       System.out.print(num+" ");     }   } } 2.选择排序

原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕 //选择排序 public class SelectionSort { public static void main(String[] args) { int[] arr={1,3,2,45,65,33,12}; System.out.println("交换之前:"); for(int num:arr){ System.out.print(num+" "); } //选择排序的优化 for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序 int k = i; for(int j = k + 1; j < arr.length; j++){// 选最小的记录 if(arr[j] < arr[k]){ k = j; //记下目前找到的最小值所在的位置 } } //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换 if(i != k){ //交换a[i]和a[k] int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } System.out.println(); System.out.println("交换后:"); for(int num:arr){ System.out.print(num+" "); } } } 3.插入排序

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据 public void sortArrs2(){ int len = arrs.length; int temp = 0; //进行len-1次循环,每次循环都将下标为i的元素插入到它前面已经排好序的队列中 for(int i=1;i

如何将冒泡排序、选择排序和插入排序结合成一个高效的排序算法?

本文共计536个文字,预计阅读时间需要3分钟。

如何将冒泡排序、选择排序和插入排序结合成一个高效的排序算法?

1.冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端 /* * 冒泡排序 */ public class BubbleSort {   public static void main(String[] args) {     int[] arr={6,3,8,2,9,1};     System.out.println("排序前数组为:");     for(int num:arr){       System.out.print(num+" ");     }     for(int i=0;i arr[j+1]){           int temp=arr[j];           arr[j]=arr[j+1];           arr[j+1]=temp;         }       }     }     System.out.println();     System.out.println("排序后的数组为:");     for(int num:arr){       System.out.print(num+" ");     }   } } 2.选择排序

原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕 //选择排序 public class SelectionSort { public static void main(String[] args) { int[] arr={1,3,2,45,65,33,12}; System.out.println("交换之前:"); for(int num:arr){ System.out.print(num+" "); } //选择排序的优化 for(int i = 0; i < arr.length - 1; i++) {// 做第i趟排序 int k = i; for(int j = k + 1; j < arr.length; j++){// 选最小的记录 if(arr[j] < arr[k]){ k = j; //记下目前找到的最小值所在的位置 } } //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换 if(i != k){ //交换a[i]和a[k] int temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } System.out.println(); System.out.println("交换后:"); for(int num:arr){ System.out.print(num+" "); } } } 3.插入排序

插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据 public void sortArrs2(){ int len = arrs.length; int temp = 0; //进行len-1次循环,每次循环都将下标为i的元素插入到它前面已经排好序的队列中 for(int i=1;i

如何将冒泡排序、选择排序和插入排序结合成一个高效的排序算法?