冒泡,插入,选择排序

经典的排序算法,此文章介绍三个


冒泡排序:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

public void bubblesort(int[] A)
    {
        if(null==A||A.length<2)
            return;
        int temp;  //保存临时变量
        boolean iswrap=true;  //是否还要继续冒泡
        do
        {
            iswrap=false;
            for(int i=1;i<A.length;i++)
            {
                if(A[i-1]>A[i]) //如果发生了交换,则将标识设为真,继续循环
                {
                    temp=A[i-1];
                    A[i-1]=A[i];
                    A[i]=temp;
                    iswrap=true;
                }
            }
        }
        while(iswrap);
        for(int i=0;i<A.length;i++)
        {
            System.out.print(A[i]);
        }
        return;
    }

插入排序:插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中

 public void insertsort(int[] A)
    {
        if(null==A||A.length<2)
            return;
        int temp;
        for(int i=1;i<A.length;i++)  //从下标为的元素开始循环数组
        {
            for(int j=i;j>0;j--)    
            {
                if(A[j]<A[j-1]) //开始元素与前一个元素比较,小于则交换,与冒泡排序相似
                {
                    temp=A[j];
                    A[j]=A[j-1];
                    A[j-1]=temp;
                }
            }
        }
        for(int i=0;i<A.length;i++)
        {
            System.out.print(A[i]);
        }
        return;
    }

选择排序:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

public void Selectsort(int[] A) {
        // Write your code here
        if(null==A||A.length<2)
            return;
        int mixinteger;
        int temp;
        for(int i=0;i<A.length;i++)
        {
            mixinteger=i;
            for(int j=i+1;j<A.length;j++)
            {
                if(A[mixinteger]>A[j])//如果无序区的元素比有序区小则交换元素
                {
                    mixinteger=j;
                }
            }
            if(mixinteger!=i)//如果最小的元素下标不为原来的值则交换元素
            {
                temp=A[i];
                A[i]=A[mixinteger];
                A[mixinteger]=temp;
            }
        }
        for(int i=0;i<A.length;i++)
        {
            System.out.print(A[i]);
        }
        return;
    }

运行主函数:

public class Solution
{
    public static void main(String[] arg)
    {
        Algorithm al=new Algorithm();
        int A[]={5,8,7,4,1};
        al.insertsort(A);
        al.bubblesort(A);
        al.Selectsort(A);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值