Chinaunix首页 | 论坛 | 博客
  • 博客访问: 129593
  • 博文数量: 44
  • 博客积分: 956
  • 博客等级: 准尉
  • 技术积分: 521
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-18 12:45
文章分类
文章存档

2012年(11)

2011年(33)

分类: C/C++

2011-12-14 18:18:41

冒泡排序的思想:
    每进行一次排序,即把最大的或者最小的元素置于最边上的位置,然后再下一轮的排序中就无需在将该元素进行排序了~
冒泡排序的另一种实现,每轮比较后,记下最大(小)元素的坐标,在本轮比较后,将该坐标的元素与最边位置的元素交换,这样,每轮排序只用交换一次,可以减小算法的时间复杂度~
  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     int data[] = {6, 5, 4, 3, 2, 1};
  5.     int i, j;
  6.     int tmp;
  7.     for (i = 0; i < sizeof(data)/sizeof(int); i++){
  8.         for (j = i; j < sizeof(data)/sizeof(int); j++){
  9.             if (data[i] > data[j]){
  10.                 tmp = data[i];
  11.                 data[i] = data[j];
  12.                 data[j] = tmp;
  13.             }
  14.         }

  15.         printf("%3d", data[i]);
  16.     }

  17.     printf("\n");
  18.     return 0;
  19. }
阅读(1460) | 评论(0) | 转发(0) |
0

上一篇:C语言高级(6)

下一篇:C高级编程(7)

给主人留下些什么吧!~~