软考二进宫-排序算法-交换排序
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的方法继续进行下去,直到所有数在该在的位置
![](https://img-blog.csdn.net/20160516162800090?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
交换排序的基本思想:
两两比较待排序列,并交换不满足顺序要求的数对,直到满足条件为止
冒泡排序:
通过相邻元素之间的比较和交换,将较小或较大的数逐渐从底部移向顶部,假定下标为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的方法继续进行下去,直到所有数在该在的位置
相关文章推荐
- JavaScript演示排序算法
- 算法之排序算法的算法思想和使用场景总结
- PHP版本常用的排序算法汇总
- JavaScript实现多种排序算法
- php 地区分类排序算法
- js三种排序算法分享
- Javascript中的常见排序算法
- java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述
- 使用Java实现希尔排序算法的简单示例
- 排序算法的javascript实现与讲解(99js手记)
- 图文详解Heap Sort堆排序算法及JavaScript的代码实现
- C++中十种内部排序算法的比较分析
- Java实现几种常见排序算法代码
- 浅谈javascript实现八大排序
- C语言演示对归并排序算法的优化实现
- PHP常用的排序和查找算法
- JavaScript中九种常用排序算法
- STl中的排序算法详细解析
- 算法学习入门之使用C语言实现各大基本的排序算法
- PHP四种基本排序算法示例