您的位置:首页 > 其它

软考二进宫-排序算法-交换排序

2016-05-16 16:28 183 查看
    这里讲解两种交换排序算法:冒泡排序、快速排序

    交换排序的基本思想:

    两两比较待排序列,并交换不满足顺序要求的数对,直到满足条件为止

    冒泡排序:

        通过相邻元素之间的比较和交换,将较小或较大的数逐渐从底部移向顶部,假定下标为0~n-1

    步骤:

    1.首先将A[n-1]和A[n-2]元素进行比较,如果A[n-2]>A[n-1],则交换位置,使小的元素上浮,大的元素下沉;

    2.当完成一趟排序后,A[0]就称为最小的元素,然后就从A[n-1]~A[1]之间进行排序

    代码示例:

    public class maopaotrue {
public static void main(String[] args){
int[] ints={23,12,56,34,78,100,2,4,10};
maopao(ints);//冒泡排序
}

public static void maopao(int[] a)
{
for(int i=0;i<a.length;i++)
{
for(int j=a.length-1;j>i;j--)
{
if(a[j]>a[j-1])
{
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
for(int c=0;c<a.length;c++)
{
System.out.print(a[c]+" ");
}
System.out.print("\n");
}
}
}
}


    结果图:

23 12 56 34 78 100 2 10 4

23 12 56 34 78 100 10 2 4

23 12 56 34 78 100 10 2 4

23 12 56 34 100 78 10 2 4

23 12 56 100 34 78 10 2 4

23 12 100 56 34 78 10 2 4

23 100 12 56 34 78 10 2 4

100 23 12 56 34 78 10 2 4

100 23 12 56 34 78 10 4 2

100 23 12 56 34 78 10 4 2

100 23 12 56 34 78 10 4 2

100 23 12 56 78 34 10 4 2

100 23 12 78 56 34 10 4 2

100 23 78 12 56 34 10 4 2

100 78 23 12 56 34 10 4 2

100 78 23 12 56 34 10 4 2

100 78 23 12 56 34 10 4 2

100 78 23 12 56 34 10 4 2

100 78 23 12 56 34 10 4 2

100 78 23 56 12 34 10 4 2

100 78 56 23 12 34 10 4 2

100 78 56 23 12 34 10 4 2

100 78 56 23 12 34 10 4 2

100 78 56 23 12 34 10 4 2

100 78 56 23 34 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

100 78 56 34 23 12 10 4 2

    快速排序:

    快速排序采用分治法,基本思想是将原问题分解成若干个规模更小但结构与原问题相似的子问题,通过递归的解决这些子问题,然后再将这些子问题的解组合成原问题的解。

    步骤:

    1.从待排序列任取一个数作为基准,通过比较和交换,将所有记录分为两组,分组A都小于该数,分组B都大于该数

    2.对分组A,分组B继续按步骤1的方法继续进行下去,直到所有数在该在的位置

   


   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序算法