一、冒泡排序
排序思想
从头到尾,两两比较相邻的两个元素,如果顺序不对,则交换顺序,这样每一次即可将参与比较中最小的找出来。
图解
从下向上,如果array[i] < array[i-1]则进行交换,如最左侧的一列,35交换-37交换-32不换-21不换-14交换-16交换。这样就得到了第二列,循环执行。
代码实现
1 | /** |
二、快速排序
排序思想
选取一个元素值,通过比较(从数组两侧向中间比较),比该值小得交换到其左边,大的被交换到右边,这样将待排序的数组分成两部分,左侧都比该元素值小,右侧都比该元素值大,针对每一个部分再执行以上的过程,直到不能再分为止。
图解
元素选取: 每一次以该组数组的第一个值作为被选取得元素值。一次排序后分成两部分,左侧比4小,右侧比4大。不断执行该过程
代码实现
递归方式实现:1
2
3
4
5
6
7
8
9
10
11
12
13void quickSort(int array[], int length) {
if( length <= 1 ) return;
int i=0, j=length-1, temp = array[0];
while( i<j ) {
while( array[j]>temp && j>i ) j--; array[i] = array[j];
while( array[i]<=temp && i<j ) i++; array[j] = array[i];
}
array[i] = temp;
sort(array, i);
sort(array+i+1, length-i-1);
return;
}
...
...
00:00
00:00
本文为作者原创文章,未经作者允许不得转载。