折腾了几天,在高人的指点下总算搞定了这三个算法。
PS:感谢long_drago(会飞的龙)
public class SelectionSort //选择排序算法
{
public static void sort(int[] a)
{
int index,indexOfNextSmallest;
for(index=0;index<a.length-1;index++)
{
indexOfNextSmallest=indexOfSmallest(index,a);
interchange(index,indexOfNextSmallest,a);
}
}
private static int indexOfSmallest(int startIndex,int[] a)
{
int min=a[startIndex];
int indexOfMin=startIndex;
int index;
for(index=startIndex+1;index<a.length;index++)
if(a[index]<min)
{
min=a[index];
indexOfMin=index;
}
return indexOfMin;
}
private static void interchange(int i,int j,int[] a)
{
int temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
public class BubbleSort //冒泡排序算法
{
public static void sort(int[] a)
{
int index;
for(index=0;index<a.length-2;index++)
{
changeNearby(a,index);
}
}
private static void changeNearby(int[] a,int xunhuankongzhi)
{
int i,j;
for(i=0;i<a.length-1-xunhuankongzhi;i++)
{
if(a[i]>a[i+1])
{
j=a[i];
a[i]=a[i+1];
a[i+1]=j;
}
}
}
}
public class InsertionSort //插入排序算法
{
public static int[] sort(int[] a, int changdu) {
int[] temp = new int[changdu];
int i;
for (i = 1; i <= temp.length; i++)
{
temp[i - 1] = move(a, i);
}
return temp;
}
private static int move(int[] a, int i)
{
int min = a[i-1];
int smallindex = 0;
int index;
for (index = i; index < a.length; index++)
{
if (a[index] < min)
{
min = a[index];
smallindex = index;
}
}
for (int j = smallindex; j > 0; j--)
{
a[j] = a[j - 1];
}
a[i - 1] = min;
return a[i - 1];
}
}