这是在学校上C语言ppt课件上讲到的,过程清晰很容易理解
假设存在一个int[] a
一、 冒泡排序过程
1、比较第一个数与第二个数,若a[0]>a[1],则交换;然后比较第二个数与第三个数;一次类推,直至第n-1个数和第n个数比较为止------第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上。
2、对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置。
3、重复上述过程,共经过n-1趟冒泡排序后,排序结束。
/**
* 冒泡排序
* @param sortedArray
*/
public static void bubbleSort(int[] a) {
//进行a.length-1趟排序
for(int i=0; i<a.length-1; i++) {
//内层循环,每趟循环从0开始,到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;
}
}
}
}
二、 选择排序过程
1、首先通过n-1次比较,从n个数中找出最小的,将它第一个数交换----第一趟选择排序,结果最小的数被安置在第一个元素位置上。
2、再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换----第二趟选择排序。
3、重复上述过程,共经过n-1趟排序后,排序结束。
/**
* 选择排序
* @param sortedArray
*/
public static void selectSort(int[] a) {
for(int i=0; i<a.length-1; i++) {
int index = i; //记录每一趟排序中值最小的数据的位置
//内层循环,每趟循环从i+1开始,到a.length结束,每趟排完后,将最小安置序列前面
for(int j=i+1; j<a.length; j++) {
if(a[j] < a[index])
index = j;
}
if(index != i) {
int temp = a[i];
a[i] = a[index];
a[index] = temp;
}
}
}