八大排序算法(一)--------冒泡排序、选择排序

    xiaoxiao2025-03-29  4

    一、冒泡排序(Bubble Sort)

    1、原理:比较相邻的两个元素,将值大的元素交换至右端。

    2、思路:(1)比较相邻的元素。将小数放在前面,大数放在后面;

                    (2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

                    (3)针对所有的元素重复以上的步骤,除了最后一个;

                     (4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

    3、算法实现

    /* * 冒泡排序 * */ public class BubbleSort { public static void main(String[] args) { // TODO Auto-generated method stub int []a =new int[] {2,5,1,4,9,6,8,7,0,3}; bubble_sort(a); show(a); } //冒泡排序算法实现 private static void bubble_sort(int[] a) { // TODO Auto-generated method stub for(int i=0;i<a.length-1;++i) { for(int j=1;j<a.length-i;++j) { //相邻两元素比较 if(a[j-1] > a[j]) { int temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } } } } //打印结果 private static void show(int[] a) { // TODO Auto-generated method stub //在单行中打印数组 for(int i=0;i<a.length;++i) { System.out.print(a[i]+" "); } System.out.println(); } }

    4、算法分析

    最佳情况:T(n) = O(n);最差情况T(n) = O(n²);平均情况T(n) = O(n²)

     

    二、选择排序(Selection Sort)

    1、原理:找到最小的数和第一个数交换

    2、思路:(1)首先找到数组中最小的数

                     (2)将它与数组第一个数交换位置(如果第一个元素就是最小数那么他就和自己交换)

                     (3)在剩下的数组中找到最小的数,将它与数组的第二个元素交换位置

                     (4)如此往复,直到将整个数组排序

    3、算法实现

    /** *选择排序算法实现 */ public class Selection { //对数组a进行排序 public static void sort(int[]a) { //将a按升序排列 for(int i=0;i<a.length;++i) { int min=i; for(int j=i+1;j<a.length;++j) { if(a[min] > a[j]) min=j; //找到最小的元素的位置 } //交换 int temp=a[min]; a[min]=a[i]; a[i]=temp; } } //打印结果 private static void show(int[] a) { // TODO Auto-generated method stub //在单行中打印数组 for(int i=0;i<a.length;++i) { System.out.print(a[i]+" "); } System.out.println(); } public static void main(String[] args) { int []a =new int[] {2,5,1,4,9,6,8,7,0,3}; sort(a); show(a); } }

    4、算法分析

    最佳情况:T(n) = O(n²);最差情况T(n) = O(n²);平均情况T(n) = O(n²)

    最新回复(0)