java实现最基本的几种排序算法(冒泡,选择,插入)

来源:互联网 发布:超图软件股票最新消息 编辑:程序博客网 时间:2024/05/29 16:47

java中常用的几种排序算法

public class Sort { //冒泡排序/** * 核心思想: * 比较两个元素,如果前一个元素比后一个元素大则进行交换,经过对每个元素的 * 比较,最后将大的元素设置成最后一个元素。重复该动作,最后形成从小到大的排序。 * @param arr */     public static void bubbleSort(long arr[])     {    int i;     long temp;    //减去1是因为如果长度为7,则只需要循环6次就行了,前六次已经把排好    for(i=0;i<arr.length-1;i++)    {//减去i是因为冒泡排序每次都把最大的排到最后,外层循环到第几次,就有排好的几个,所以要减去最后    //把前面开始进行冒泡排好    for(int j=0;j<arr.length-i-1;j++)    {//互换    if(arr[j]>arr[j+1])    {    temp = arr[j];    arr[j]=arr[j+1];    arr[j+1]=temp;    }    }    }      }      //升级的冒泡排序 public static void BubbleSort(long arr[]) { int i,flag; long temp; flag = 1;//flag:1表示排序没有结束,0表示排序已经结束 for(i=0;i<(arr.length-1)&&(flag==1);i++) {   for(int j=0;j<arr.length-i-1;j++)   {   flag = 0;//如果以后的循环不改变flag的值,说明没有发生数组元素的交换   //也就是说,这个数组已经排好序了。所有就可以提前退出循环。   if(arr[j]>arr[j+1])   {   flag = 1;   temp = arr[j];   arr[j]=arr[j+1];   arr[j+1]=temp;   }      } }   } //选择排序 /**  * 扫描所有的元素,得到最小的元素,并将最小的元素与最左边的第一个元素进行交换。  * 再次扫描除第一位的所有元素,得到最小的元素,与左边第二个元素进行交换,以此类推  * @param arr  */public static void selectSort(long arr[]){   long temp=0;;int min=0;for(int i=0;i<arr.length-1;i++){//默认第一个数据最小min=i;for(int j=i+1;j<arr.length;j++){if(arr[j]<arr[min]){min=j;}}temp = arr[i];arr[i] = arr[min];arr[min] = temp;}}//插入排序/** * 抽出一个元素,在其前面找到合适的位置进行插入 * @param arr */public static void insertSort(long arr[]){long select = 0;for(int i=1;i<arr.length;i++){//默认抽出的那个是第二个元素select = arr[i];int j = 0;//(arr[j-1]>select)这个是只要跟前面的那个一对比,如果发现了比前面的小,就继续往前推for(j=i;j>0&&(arr[j-1]>select);j--){arr[j] = arr[j-1];}arr[j] = select;}}}


0 0
原创粉丝点击