几种简单排序算法总结
冒泡排序
public static void main(String[] args)
{
int[] a={
31,
32,
4,
5,
45,
65,
76,
44,
65};
output(a);
for(
int i=
0;i<a.length-
1;i++)
for(
int j=
0;j<a.length-
1-i;j++)
{
if(a[j]>a[j+
1])
{
int temp=a[j];
a[j]=a[j+
1];
a[j+
1]=temp;
}
}
output(a);
}
选择排序
public static
void main(String[] args)
{
int[] a={
31,
32,
4,
5,
45,
65,
76,
44,
65};
output(a);
for(
int i=
0;i<a.
length-
1;i++){
for(
int j=
0;j<a.
length-i-
1;j++)
{
if(a[j]>a[a.
length-i-
1])
{
int temp=a[j];
a[j]=a[a.
length-i-
1];
a[a.
length-i-
1]=temp;
}
}
}output(a);
}
插入排序
public static void main(String[] args)
{
int[] a={
31,
32,
4,
5,
45,
65,
76,
44,
65};
output(a);
for(
int i=
0;i<a.length-
1;i++){
int key=a[i+
1];
for(
int j=i;j>=
0;j--)
{
if(a[j]>key)
{
a[j+
1]=a[j];
int temp=a[j];
a[j]=a[a.length-i-
1];
a[a.length-i-
1]=temp;
}
}
}
output(a);
}
快速排序
public static void main(String[] args)
{
int[] a={
31,
32,
4,
5,
45,
65,
76,
44,
65};
output(a);
quick(a);
output(a);
}
public static void quick(
int[] a)
{
qsort(a,
0,a.length-
1);
}
public static int partition(
int[] a,
int low,
int high)
{
int key=a[low];
int i=low,j=high;
while(i<j)
{
while(a[j]>=key&&i<j)
j--;
a[i]=a[j];
while(a[i]<key&&i<j)
i++;
a[j]=a[i];
}
a[i]=key;
return i;
}
public static void qsort(
int[] a,
int low,
int high)
{
if(low<high)
{
int mid=partition(a,low,high);
qsort(a,low,mid-
1);
qsort(a,mid+
1,high);
}
}
算法复杂度比较