• 算法之排序


    我用python实现的冒泡排序是双指针,这里虽然也是双指针,但是flag == 0,可以退出循环我不理解
    选择排序python用的是技巧min()函数和切片
    java么求初每一次循环索引的最小值(这里的技巧很厉害),然后再覆盖赋值

    public class suanfa {
        public static void main(String[] args) { //直接写main编译器就自动帮你加上了
            suanfa bubble = new suanfa(); //把这整个类赋值给sort变量
            //java赋值给变量一般数据类型时候都要加数据类型,指定大小空间;除了上方的类等赋值,方法赋值也要
            int[] array = {2,5,1,6,4,9,8,5,3,1,2,0};
            int[] arr = {2,5,1,6,4,9,8,5,3,1,2,0};
            int[] sort = bubble.sort(array);//类调用类中的方法
            int[] sort1 = bubble.select(arr);//选择排序
            for(int num:sort){
                System.out.print(num+"	");
            }
            System.out.println("_------分割线------—_");
            for(int num:sort1){
                System.out.print(num+"	");
            }
        }
        //冒泡排序
        public int[] sort(int[] array){
        int temp = 0;
        // 外层循环,他决定一共走几趟
        //-1为了防止溢出
        for(int i = 0;i<array.length-1;i++){
            int flag = 0; //通过符号位可以减少无谓的比较,如果已经有序了,就退出循环
            // 内层循环,他决定每趟走一次
            for(int j =0;j<array.length-i-1;j++){
                //如果后一个大于前一个,则换位
                if(array[j+1]>array[j]){
                    temp = array[j];
                    array[j] = array[j+1];
                    array[j+1] = temp;
                    flag=1;
                }
            }
            //为什么flag == 0,可以退出循环
            if(flag==0){
    
                break;
            }
        }
        return array;
        }
    
        //选择排序
        public int[] select(int arr[]){ //arr也可以等价于array
            int temp = 0;
            for(int i = 0;i<arr.length-1;i++){
                //不必python中的range(len(arr)),他不取最后一项,
                //java这里要标记清楚
    
                // 认为目前的数就是最小的,记录最小数的下标
                int minIndix = i;
                for(int j=i+1;j<arr.length;j++){
                    if(arr[minIndix]>arr[j]){// 修改最小值的下标
                        minIndix = j;
                    }
                }
                // 当退出for就找到这次的最小值,就需要交换位置了
                if(i!=minIndix){ //交换当前值和找到最小值的位置
                    temp = arr[i];
                    arr[i] = arr[minIndix];
                    arr[minIndix] = temp;
                }
            }
            return arr;
    
        }
    }
    
    ~~
    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    安装Visual_Studio的艰辛历程
    桶排序和直接排序的算法和数据结构
    链式队列的c++代码和原理以及编译分析
    C# 利用xmlhttp根据网址调用接口获取数据
    使用 LINQ To SQL 和实体框架实现灵活的数据访问
    K51的安装包和ET199的开发包和示例
    The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[BMS.DataAccess.Models.ServiceTyp
    VS2008中文版中安装 silverlight 3 英文版
    让Windows Server 2008+IIS 7+ASP.NET支持10万个同时请求(转)
    在windows2003+IIS6部署dot net的MVC项目
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15085316.html
Copyright © 2020-2023  润新知