• java


    冒泡排序

        //冒泡排序, type = 0 则从小到大, type = 1则从大到小
        //遍历一遍如果后面的比前面的小(大),则两者交换,遍历length-1遍
        public void bubbleSort(int a[], int type){
            for(int i = 0; i < a.length - 1; i++) {
                for (int j = 0; j < a.length - 1; j++) {
                    if ( (a[j] > a[j + 1] && type==0) || (a[j] < a[j + 1] && type == 1) ){
                        int n = a[j];
                        a[j] = a[j + 1];
                        a[j + 1] = n;
                    }
                    //showArray(a);
                }
            }
        }

     选择排序

        //选择排序, type = 0 则从小到大, type = 1则从大到小
        //遍历一遍选出前i个中最小(大)的和a[i-1]交换。i从length到1;
        public void selectionSort(int a[], int type){
            for(int i = a.length-1; i >= 0; i--) {
                int flag = 0;
                for (int j = 0; j <= i; j++) {
                    if ( (a[flag] > a[j] && type==0) || (a[flag] < a[j] && type == 1) ){
                        flag = j;
                    }
                    //showArray(a);
                }
                int n = a[i];
                a[i] = a[flag];
                a[flag] = n;
            }
        }

    插入排序

        //插入排序, type = 0 则从小到大, type = 1则从大到小
        //从第i个数字开始(i之前的数字都已经排序完毕),如果第i个数字比它前面的大(小),则说明前i个数字没有排好顺序(第i个数字的位置不对),则把第i个数字记录下来,往前遍历,找到合适的位置插入,依次从第2个数字检查到第length个数字。
        public void insertionSort(int a[], int type){
            for(int i = 1; i < a.length; i++){
                int current = a[i];
                int j = i;
                while( (j>0 && current < a[j-1] && type == 0) || (j>0 && current > a[j-1] && type == 1) ) {//当current比a[j-1]数字小(大)时,说明current应该在这个数字之前,则把这个数字往后挪一格。
                    a[j] = a[j-1];
                    j--;
                }
                a[j] = current; //当循环结束时,说明目前a[j]之前的数字比current小(大),所以current存在a[j]。
            }
        }

    希尔排序

        //希尔排序
        public void shellSort(int[] a){
            //可以理解为把数组根据跨度分成很多数组进行插入排序,不断缩小跨度最后统一。
    
            for(int gap = a.length/2; gap > 0; gap = gap/2){  //间距从length/2开始一直减到0(其实应该是1,但是考虑到java整除问题所以才设为0)
                //然后开始把每隔gap个的数字为一组进行插入排序 (其实就是把插入排序里面的减1全变成减gap- -)
                for(int i = gap; i < a.length; i++){
                    int current = a[i];
                    int j = i;
                    while( j - gap >= 0 && current < a[j - gap] ){
                        a[j] = a[j - gap];
                        j = j - gap;
                    }
                    a[j] = current;
                }
            }
        }

    快速排序

    https://www.cnblogs.com/clamp7724/p/11842603.html

    桶排序

    https://www.cnblogs.com/clamp7724/p/11852406.html

    二叉排序树

    https://www.cnblogs.com/clamp7724/p/11861860.html

    当然了- -平时做题的时候排序一般直接用工具类:

    int[] a;
    Arrays.sort(a);
  • 相关阅读:
    C#基础知识委托与泛型(转载)
    C.消息队列(转载)
    可编辑的 HTML JavaScript 表格控件 DataGrid
    Asp无组件上传进度条解决方案
    A lot of Javascript tips
    资料只看看,不能copy/paste。
    Converting Numbers to Strings
    浅析Google技术底蕴
    ASP.NET makes uploading files from the client to the server a snap(UploadInterface.PostedFile.SaveAs)
    IT IS an IMPORTANT String for Input TYPE=File Field enctype="multipart/formdata"
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11590218.html
Copyright © 2020-2023  润新知