冒泡排序
@Test//冒泡排序
public void test() {
int num []= {9,7,4,6,3,8,1,5};
int exchange =0;//用户标识是否发生排序,用作冒泡的改进
int count =0;//记录冒泡排序的次数
for (int i = 0; i < num.length-1; i++) {
exchange = 0;//通过标识是否发生过排序
for (int j = 0; j < num.length-1-i; j++) {
if (num[j]>num[j+1]) {
int temp = num[j];
num[j]=num[j+1];
num[j+1]=temp;
exchange =1;//如果还有排序,则exchage为1
count++;
}
}
if(exchange == 0) {//如果此次扫描没有发生过交换,则说明已经全部排序好,不需要进行下次扫描
System.out.println(Arrays.toString(num));
System.out.println(count);
return ;
}
}
}
选择排序
@Test
public void test3() {
int a [] = {3,9,8,1,5,4,6,7,2};
int max ,k;//最大值及其下标
for (int i = 0; i < a.length-1; i++) {
max = a[i];
k=i;
for (int j = i+1; j < a.length; j++) {//每次取得剩余的最大值,及其下标
if (a[j]>max) {
max=a[j];
k=j;
}
}
a[k]=a[i];//最大值进行交换
a[i]=max;
}
System.out.println(Arrays.toString(a));
}
@Test
public void test4() {
int i [] = {3,9,8,1,5,4,6,7,2};
for (int j = 0; j < i.length-1; j++) {
int minPos = j ;
for (int k = j; k < i.length; k++) {
if (i[k]<i[minPos]) {
minPos =k;
}
}
if (i[minPos]!=i[j]) {
int temp = i[minPos];
i[minPos]=i[j];
i[j]=temp;
}
}
System.out.println(Arrays.toString(i));
}
}