- 数组排序:
- 1.选择排序,
- 将数组分两部分,将最小的放到最前,每次循环从后一部分抽出最小的
- public int[ ] ChooseSort( int[ ] arr){
- int t;
- for(int i = 0;i<arr.length;i++){
- int m=i;
- for(int j=i+1;j<arr.length;j++){
- if( arr[ j] <arr[ m ]){
- m=j;
- }
- if(i!=m)[
- t = arr[i];
- arr[ i] = arr[ m];
- arr[m] = t;
- }}}
- return arr;
- }
- 2.冒泡排序:
- 每次循环将最大的数移到最后
- public int[ ] MaoPaoSort(int[ ] arr ){
- int t ;
- for(int i = 0;i<ar.length;i++){
- for(int j =0;j<arr.length-i-1;j++){
- if(arr[j]>arr[j+1]){
- t = arr[j+1];
- arr[ j+1] = arr[j];
- arr[j] = t;
- }
- }
- }
- return arr;
- }
- 3.插入排序;
- 将数组分成两组,每次将后面一组的索引最小的数放到第一组合适的位置
- public static int[ ] InsertSort(int[] arr){
- for(int i=1;i<arr.length;i++){
- int temp = arr[i];
- int j = i-1;
- while(temp<arr[j]){
- arr[j+1]=arr[j];
- j--;
- if(j<0){
- break;
- }
- }
- arr[j+1]= temp;
- }
- return arr;
- }
- 4.快速排序:
- 也是公认的速度最快的排序方式,也称分治发其原理是不断地填坑,不断讲原数组二分具体如下
- public static void QuickSort(int[ ] arr,int left, int right){
- int t;
- int s = arr[left];
- int i=left;
- int j =right;
- if(i<j){
- while(i<arr.length && arr[--i]<s);
- while(j>-1 && arr[--j]>s);
- if(i>j){break;}
- else{
- t=arr[i];
- arr[i]=arr[j];
- arr[j]=t;
- }
- arr[left]=arr[j];
- QuickSort(arr,left,j-1);
- QuickSort(arr,j+1,right);
- }
- return arr;}
转载于:https://blog.51cto.com/mooninday/1112320