1. 冒泡排序
基本思想:每一趟排序均从未排序元素开始,将未排序元素与其相邻元素进行比较,若不符合排序要求则进行交换后继续比较下一个元素与其相邻元素的大小,若符合排序要求则继续比较下一个元素与其相邻元素的大小。第一趟排序结束后,最小或最大元素来到数组的最后一个元素处,第二趟排序结束后,最小或最大元素来到数组的倒数第二个元素处,...如此反复循环直到所有元素均进行排序处理。
举例说明:未排序数组array[7]={5,3,12,9,1,6,8},从前往后冒泡并以升序形式进行排序。
(1)第一趟排序:对未排序元素区间[0,6]进行排序,未排序区间的下边界为bound=6,定义一个索引cur指向未排序区间中的元素,cur初始指向未排序区间的开始处即cur=0。数组为array[7]={5,3,12,9,1,6,8}
开始第一趟的比较(比较条件为cur<bound=6):
①cur=0,array[cur]=5,5比3大故进行交换,数组变为array[7]={3,5,12,9,1,6,8};
②cur++即cur=1,array[cur]=5,5没12大故不进行交换,数组仍为array[7]={3,5,12,9,1,6,8};
③cur++即cur=2,array[cur]=12,12比9大故进行交换,数组变为array[7]={3,5,9,12,1,6,8};
④cur++即cur=3,array[cur]=12,12比1大故进行交换,数组变为array[7]={3,5,9,1,12,6,8};
⑤cur++即cur=4,array[cur]=12,12比6大故进行交换,数组变为array[7]={3,5,9,1,6,12,8};
⑥cur++即cur=5,array[cur]=12,12比8大故进行交换,数组变为array[7]={3,5,9,1,6,8,12};
⑦cur++即cur=6,此时cur!<bound,故第一趟比较结束,