编程语言
首页 > 编程语言> > 算法:选择排序,冒泡排序,插入排序

算法:选择排序,冒泡排序,插入排序

作者:互联网

算法:选择排序,冒泡排序,插入排序
        package com.Algorithm;

        public class Demo03 {
            public static void Demo1(int arr[]){
                for(int i=0;i<arr.length;i++){
                    System.out.print(arr[i] +" ");
                }
            }
            //选择排序
            public static void Demo2(int arr[]){
                if(arr.length<2||arr==null){
                    return;
                }
                int N = arr.length;

                for(int i = 0;i<N;i++){
                    //定义的最小值为i即每次选择的元素都与其余元素依次比较
                    int MinNub =i;
                    //遍历除i之外的其他数字
                    for(int j=i+1;j<N;j++){
                        //定义一个变量为最小的;通过三目运算符进行一次比较
                        MinNub = arr[MinNub] < arr[j] ? MinNub : j;
                        Demo3(arr,MinNub,j);
                    }
                }
            }
                    //插入排序
            public static void Demo4(int arr[]){
                if(arr.length<2||arr==null){
                    return;
                }
                //0~1;
                //0~2;
                int N = arr.length;
                 for(int end = 1;end<N;end++){
                     //判断出当前位置的数小于左边的数;则交换位置
                     while (arr[end]<arr[end-1]){
                         //交换值的大小
                         Demo3(arr,end,end-1);
                         //交换位置后进行下标索引向左移减一
                         end--;
                     }

                 }

            }
            //插入排序优化
            public static void Demo5(int arr[]){
                if(arr.length<2||arr==null){
                    return;
                }
                //0~1;
                //0~2;
                int N = arr.length;
                for(int end = 1;end<N;end++){
                    //判断出当前位置的数小于左边的数;则交换位置
                    //pro是当前左边的位置;end(pro+1)是当前位置
                    //for(int pro = end -1;pro>=0&arr[pro]>arr[pro+1];pro--){
                    for(int pro = end -1;pro>=0&arr[pro]>arr[end];pro--){
                        Demo3(arr,end,end-1);
                    }
                }
            }
            //冒泡排序
            public static void Demo3( int arr[]){
                if(arr.length<2||arr==null){
                    return;
                }
                int N = arr.length;
                //冒泡排序,把大值放到后面小值放前面
                //0~N-1进行排序(N-1除去本身)
                for(int end = N-1;end>=0;end--){
                    for(int second = 1;second<=end;second++){
                        //比较这个数和前一个数
                        if(arr[second-1]>arr[second]){
                            Demo3(arr,second-1,second);
                        }
                    }

                }
            }
            //此处只是单纯的值交换,不用考虑大小
            public static void Demo3(int arr[],int i,int j){
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }


            public static void main(String[] args) {
                int arr []= {1,3,4,56,7,12,33,40};
                Demo3(arr);
                Demo1(arr);

            }


        }

标签:arr,end,int,pro,冒泡排序,public,Demo3,排序,插入排序
来源: https://www.cnblogs.com/188221creat/p/16175747.html