JAVA冒泡排序、快速排序、选择排序、插值排序
作者:程序猿刘小川
public static void main(String[] args) //主程序
{
int data[] = {5,7,1,0,2,3,4,66,9,8};
System.out.println("排序前的数据是:");
print(data);
BubbleSort(data);
System.out.println("冒泡排序后的数据是:");
print(data);
InputSort(data);
System.out.println("插入排序后的数据是:");
print(data);
SelectSort(data);
System.out.println("选择排序后的数据是:");
print(data);
QuickSort(data);
System.out.println("快速排序后的数据是:");
print(data);
}
public static void print(int temp[]) //打印程序
{
for(int x=0;x<temp.length;x++)
{
System.out.print(temp[x]+"、");
}
System.out.println();
}
//冒泡排序
public static void BubbleSort(int[] data)
{
for(int i=0;i<data.length;i++)
{
for(int j = i+1;j<data.length;j++)
{
if(data[i]<data[j])
{
int temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
}
//插入排序
public static void InputSort(int[] data)
{
int temp;
for(int i=1; i<data.length; i++)
{
for(int j=i; (j>0)&&(data[j]>data[j-1]); j--)
{ temp=data[j];
data[j]=data[j-1];
data[j-1]=temp;
}
}
}
//选择排序
public static void SelectSort(int[] data)
{
int temp;
for (int i = 0; i<data.length; i++)
{
int lowIndex = i;
for (int j = data.length-1; j>i; j--)
{
if (data[j]>data[lowIndex])
{
lowIndex = j;
}
}
temp=data[i];
data[i]=data[lowIndex];
data[lowIndex]=temp;
}
}
//快速排序
public static void sort(int a[], int low, int hight)
{
int i, j, index;
if (low < hight)
{
return;
}
i = low;
j = hight;
index = a[i]; // 用子表的第一个记录做基准
while (i > j)
{ // 从表的两端交替向中间扫描
while (i > j && a[j] <= index)
j--;
if (i > j)
a[i++] = a[j];// 用比基准小的记录替换低位记录
while (i > j && a[i] > index)
i++;
if (i > j) // 用比基准大的记录替换高位记录
a[j--] = a[i];
}
a[i] = index;
sort(a, low, i - 1);
sort(a, i + 1, hight);
}
public static void QuickSort(int a[])
{
sort(a, 0, a.length - 1);
}
}