1.冒泡排序
冒泡排序是按照一定顺序比较相邻两个数的大小,如果前一个数比后一个数大(或小),则交换它们的顺序,直到按要求排列好。
代码:
package MyClass1;
public class Bubblesort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]={1,-3,5,-6,0,7,-9,14,-11,8};
System.out.println("排序前:");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("排序后:");
for(int i=1;i<a.length;i++)
{
for(int j=0;j<a.length-i;j++)
{
if(a[j]>a[j+1])
{
int temp;
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]+" ");
}
}
}
结果截图:
2.快速排序
快速排序是先找一个基准数(通常为第一个或最后一个数),将其他数与基准数比较,然后将原序列分为比基准数大和比基准数小的两部分,再用用样的方法去递归排列这两部分,以此类推。
代码:
//快速排序
package MyClass1;
public class Quicksort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]={12,-24,39,0,-33,45,56,-89};
System.out.println("排序前:");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("排序后:");
int low=0;
int high=a.length-1;
quicksort(a,low,high);
for(int k=0;k<=high;k++)
{
System.out.print(a[k]+" ");
}
}
public static void quicksort(int[] a, int low, int high) {
if (low < high) {
int i=low;
int j=high;
int temp=a[i];
while(i<j)
{
while (i<j && a[j]>temp)
j--;
if (i<j)
{
a[i]=a[j];
}
while (i<j&&a[i]<=temp)
i++;
if (i < j)
{
a[j] = a[i];
}
a[i] = temp;
quicksort(a, low, i-1);
quicksort(a, i+1, high);
}
}
}
}
结果截图:
3.直接插入排序
直接插入排序是在原序列中把第n个元素插入到前面的有序数中(假设前面的n-1(n>=2)个数的顺序已排好),使这n个数排好顺序,反复循环,直到全部排好顺序。
代码:
//直接插入排序
package MyClass1;
public class StraightInsertSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]= {111,-9,6,12,-54,35,0,-4};
System.out.println("排序前:");
for(int i=0;i<a.length;i++)
{
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("排序后:");
int temp;
for (int i=1; i<a.length; i++)
{
for (int j=i; j>0&&a[j]<a[j-1]; j--)
{
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]+" ");
}
}
}
结果截图: