• java实现 排序算法(鸡尾酒排序&选择排序&插入排序&二分插入排序)


    1、鸡尾酒排序算法

    源程序代码:

    package com.SuanFa;

    public class Cocktial {
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            cooktailSort cook=new cooktailSort();
            int[] A={1,2,3,8,4,0,5,34,12,67,35,9,45,443,454,242,343};
            int n=A.length;
            cook.cooktailSort(A, n);
            System.out.println("输出排序结果");
            for(int i=0;i<A.length;i++){
                System.out.printf(A[i]+" ");
            }
        }
    }
    class cooktailSort{
         void Swap(int[] A,int i,int j){
            int temp=A[i];
            A[i]=A[j];
            A[j]=temp;
        }
        void cooktailSort(int[] A,int n){
            int left=0;
            int right=n-1;
            while(left<right){
                for(int i=left;i<right;i++){
                    if(A[i]>A[i+1]){
                        Swap(A,i,i+1);
                    }
                }
                right--;
                for(int i=right;i>left;i--){
                    if(A[i-1]>A[i]){
                        Swap(A,i-1,i);
                    }
                }
                left++;
            }
        }
    }
    2、选择排序算法

    程序代码

    package com.SuanFa;

    public class XuanZe {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            selectSort sort=new selectSort();
            int[] A={23,34,3,45,45,32,55,12};
            int n=A.length;
            sort.select(A, n);
            System.out.println("输出排序结果");
            for(int i=0;i<n;i++){
                System.out.printf(A[i]+" ");
            }
        }
    }
    class selectSort{
        void Swap(int[] A,int i,int j){
            int temp=A[i];
            A[i]=A[j];
            A[j]=temp;
        }
        void select(int[] A,int n){
            for(int i=0;i<n-1;i++){
                int min=i;
                for(int j=i+1;j<n;j++){
                    if(A[j]<A[min]){
                        min=j;
                    }
                }
                if(min!=i){
                    Swap(A,min,i);
                }
            }
        }
    }

    3、插入排序算法

    程序代码

    package com.SuanFa;

    public class ChaRu {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            cha c=new cha();
            int[] A={2,3,3,5,21,65,23,43};
            int n=A.length;
            c.insertSoet(A, n);
            for(int i=0;i<n;i++){
                System.out.printf("%d ",A[i]);
            }
        }
    }
    class cha{
        void insertSoet(int A[],int n){
            for(int i=1+1;i<n;i++){
                int get=A[i];
                int j=i-1;
                while(j>0&&A[j]>get){
                    A[j+1]=A[j];
                    j--;
                }
                A[j+1]=get;
            }
        }
    }
    4、二分插入排序算法

    程序代码

    package com.SuanFa;

    public class erfengChaRu {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
            test1 sort=new test1();
            int[] A={23,34,3,45,45,32,12,55,12,12};
            int n=A.length;
            sort.insertSortDic(A, n);
            System.out.println("输出排序结果");
            for(int i=0;i<n;i++){
                System.out.printf(A[i]+" ");
            }
        }
    }
    class test1{
        void insertSortDic(int A[],int n){
            for(int i=1;i<n;i++){
                int get=A[i];
                int left=0;
                int right=i-1;
                while(left<=right){
                    int mid=(left+right)/2;
                    if(A[mid]>get){
                        right=mid-1;        
                    }else
                        left=mid+1;
                }
                for(int j=i-1;j>=left;j--){
                    A[j+1]=A[j];
                }
                A[left]=get;
            }
        }
    }

    5、堆排序算法

  • 相关阅读:
    Linux中带颜色输出的printf使用简介(33)
    Windows中检测当前是否有窗口全屏
    duilib WindowImplBase BUG修复 --- 按一次ESC键, 关闭多个窗口
    【转】OSI七层模型与TCP/IP五层模型
    linux修改文件所有者和文件所在组
    【转】开发人员该如何应对线上故障
    【转】jstack命令的使用
    【转】【JVM】jmap命令详解----查看JVM内存使用详情
    【转】【JVM】jstat命令详解---JVM的统计监测工具
    阿里开源java诊断工具Arthas
  • 原文地址:https://www.cnblogs.com/xinxianquan/p/9248788.html
Copyright © 2020-2023  润新知