Java排序算法

来源:互联网 发布:网络群发器 编辑:程序博客网 时间:2024/06/07 14:30

1.选择排序
简单选择排序的基本思想:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录的位置与第一个记录的位置交换;接着对不包括第一个记录以外的其他记录进行第二次比较,得到最小记录并与第二个位置记录交换;重复该过程,知道进行比较的记录只剩下一个为止。

public class selectionSort {    public static void main(String[] args) {        int[]arr= {10,14,9,5,16,7};        System.out.println("排序之前的数:");        for (int i = 0; i < arr.length; i++) {            System.out.print(arr[i]+" ");        }        System.out.println();        select(arr);    }    public static void select(int[] arr) {        for (int i = 0; i < arr.length; i++) {            int k=i;            for (int j = i + 1; j < arr.length; j++) {//选最小的                if (arr[k] > arr[j]) {                    k=j;//记录最小的位置                }                           }            int temp = arr[i];//交换            arr[i] = arr[k];            arr[k] = temp;        }        System.out.println("排序过后的数:");        for (int i = 0; i < arr.length; i++) {            System.out.print(arr[i]+" ");        }    }}

2.插入排序
插入排序的基本思想:对于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。

public class insertSort {    public static void insertSort(int []a) {        int temp = 0;        for (int i = 1; i < a.length; i++) {// 从数组的第二个元素开始循环将数组中的元素插入            int j;            temp = a[i];// 设置数组中的第2个元素为第一次循环要插入的数据            for ( j=i-1; j >= 0 && temp < a[j]; j--) {                a[j + 1] = a[j]; // 将大于temp的值整体后移一个单位            }            a[j + 1] = temp;// 直到要插入的元素不小于第j个元素        }    }     public static void main(String[] args) {            int a[] = { 38,65,97,76,13,27,49 };            insertSort(a);            for (int i = 0; i < a.length; i++) {                System.out.print(a[i]+" ");            }        }}

3.冒泡排序
冒泡排序的基本思想:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。
冒泡排序的优点:每进行一趟排序,就会少比较一次,因为每进行一趟排序都会找出一个较大值。

public class bubbleSort{public static void main(String[]args){       int a[]={49,38,65,97,76};      int temp=0;      for(int i=0;i<a.length-1;i++){          for(int j=0;j<a.length-1-i;j++){          if(a[j]>a[j+1]){              temp=a[j];              a[j]=a[j+1];              a[j+1]=temp;          }          }      }      for(int i=0;i<a.length;i++)          System.out.print(a[i]+" ");     }  }
原创粉丝点击