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

2022/4/21 20:42:44

本文主要是介绍算法:选择排序,冒泡排序,插入排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

算法:选择排序,冒泡排序,插入排序
        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);

            }


        }



这篇关于算法:选择排序,冒泡排序,插入排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程