简单排序(冒泡,选择,插入)

匿名 (未验证) 提交于 2019-12-02 23:49:02

冒泡排序经常是我们所接触到的第一个排序算法,因此思想也相对比较简单,它的原理就是按照索引(数组,集合等)顺序从前往后依次与它后面的元素一个一个进行比较。

    public static  void bubleSort(Integer[] arr){         for(int i=0;i<arr.length-1;i++){             for(int j=i+1;j<arr.length;j++){                 if(arr[i]>arr[j]){                     int temp = arr[i];                     arr[i] = arr[j];                     arr[j] = temp;                }           }         }     } 

选择排序的核心思想就是从待排序的元素中找出最小的元素,我们可以把一组数据分为两部分,左边是排好的,右边是没有排好的。最初的时候,全是没有排序过的,我们此时假定arr[0],也就是minIndex=0,这个位置的元素是最小的。然后我们依次把后面的元素与它进行比较,如果arr[j]比这个arr[minIndex]还要小,那么我们就更新minIndex->minIndex=j的值,最后该轮循环结束后如果i不等于minIndex,我们就进行交换操作。接着i=1,minIndex=i,进行下一轮的操作。

    public static void selectSort2(Integer[] arr){         for(int i=0;i<arr.length-1;i++){             int minIndex = i;             for(int j=i+1;j<arr.length;j++){                 if(arr[minIndex]>arr[j]){                     minIndex=j;                 }             }             if(minIndex!=i) {                 int temp = arr[i];                 arr[i] = arr[minIndex];                 arr[minIndex] = temp;             }         }     }

对于插入排序,我们可以将其与选择排序进行比,这两种排序我们都可以将其分为两部分,已经排好的(左边),没有排好的(右边)。选择排序是从从未排好的数组中选择最小的,而插入排序是按索引次序拿出元素,然后在已经排好序的数组中进行移动(一般从后向前移动)。

public  void sort(Comparable[] arr){ for(int i=1;i<arr.length;i++){      //外循环   for(int j=i;j>0;j--){             //内循环     if(arr[j].compareTo(arr[j-1])<0){                Comparable temp = arr[j-1];              arr[j-1]=arr[j];             arr[j]=temp;     }           else{         break;        ,     }      }    } }
 public void sort2(Comparable[] arr){   for(int i=1;i<arr.length;i++){            Comparable  e=arr[i];             int j;       for(j=i;j>0;j--) {         if(arr[j-1].compareTo(e)>0){          arr[j]=arr[j-1];        }else{           arr[j]=e;           break;           }      }    }  }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!