java中的各种排序

冒泡排序
分为从大到小和从小到大两种。
从大到小 每次把最小的冒到最后面
从小到大 每次把最大的冒到最后面(以这个为例)
从前往后比较 ,如果前面比后面小,就交换位置。

int[] but= {23,43,6,80,92,14,38};
 for(int i=0;i<but.length;i++) {
        for(int j=0;j<but.length-i-1;j++) {
            if(but[j]>but[j+1]) {
                int temp;
                temp=but[j];
                but[j]=but[j+1];
                but[j+1]=temp;
            }
        }
    }


选择排序
每次把最小的(或者最大的)元素放入已排序的集合中
 一般先把第一个元素当成最小的元素

for(int i=0;i<but.length;i++) {
        int min=i;//记录当前位置
                    //找出最小的数,并把min指向它
     for(int j=i;j<but.length;j++) {
        
         if(but[j]<but[min]) {
             min=j;
         }
                   //交换最小的数but[min]和第i位数的位置
         int temp=but[min];
         but[min]=but[i];
         but[i]=temp;
     }
    }



插入排序
对未排序的序列元素逐个插入,直到所有元素都插完
思想插入第i个时,前面的第1个到第i-1个都已经排好序,
用第i个跟前面的轮流比较,找到插入位置将第i个插入,原来位置及以后的全部后移一位。

int[] but= {12,32,56,7,4,98};    
   for (int i = 1; i < but.length; i++) {
       int temp = but[i];
       int j;
       for ( j = i - 1; j >= 0 && but[j] > temp; j--) {
           but[j + 1] = but[j];//后移一位
       }
       but[j + 1] = temp;
   }

 



原文地址:https://www.cnblogs.com/yxj808/p/11946556.html