冒泡排序的思想:
每进行一次排序,即把最大的或者最小的元素置于最边上的位置,然后再下一轮的排序中就无需在将该元素进行排序了~
冒泡排序的另一种实现,每轮比较后,记下最大(小)元素的坐标,在本轮比较后,将该坐标的元素与最边位置的元素交换,这样,每轮排序只用交换一次,可以减小算法的时间复杂度~
- #include <stdio.h>
- int main(void)
- {
- int data[] = {6, 5, 4, 3, 2, 1};
- int i, j;
- int tmp;
- for (i = 0; i < sizeof(data)/sizeof(int); i++){
- for (j = i; j < sizeof(data)/sizeof(int); j++){
- if (data[i] > data[j]){
- tmp = data[i];
- data[i] = data[j];
- data[j] = tmp;
- }
- }
- printf("%3d", data[i]);
- }
- printf("\n");
- return 0;
- }
阅读(1493) | 评论(0) | 转发(0) |