您的位置:首页 > 其它

冒泡,插入,选择排序

2016-07-29 11:59 190 查看
经典的排序算法,此文章介绍三个

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

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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息