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