周立功教授谈迭代器模式设计
9 int *pNext; // pNext指向p1所指向的元素的下一个元素
10
11 while(p2 != begin){
12 p1 = begin;
13 flag = 1;
14 while(p1 != p2){
15 pNext = p1+1;
16 if(*p1>*pNext) // 比较指针所指向的值的大小
17 {
18 swap(p1, pNext); // 交换2个指针的内容
19 flag = 0; // flag = 0,表示2个指针的内容交换
20 }
21 p1++; // p1指针后移
22 }
23 if(flag) return; // 没有交换,表示已经有序,则直接返回
24 p2--; // p2指针前移
25 }
26 }
27
28 int main(int argc, char *argv[])
29 {
30 int a[]={5, 3, 2, 4, 1};
31 int i = 0;
3233 bubbleSort(a, a+4);34 for(i = 0; i < sizeof(a) / sizeof(a[0]); i++){
35 printf("%d\n", a[i]);
36 }
37 return 0;
38 }如果任何一次遍历没有执行任何交换,则说明记录是有序的且终止排序。其中,p1指向数组的首元素,pNext指向p1所指向的元素的下一个元素,p2指向数组的尾元素(图 3.21(a))。如果*p1> 如果任何一次
- 电源软启动的实用设计技巧(07-16)
- 周立功:动态分布内存——malloc()函数与calloc()函数(07-22)
- 周立功“程序设计与数据结构”:深度解剖动态分布内存的free()函数与realloc()函数(07-25)
- 周立功教你学程序设计技术:做好软件模块的分层设计,回调函数要这样写(07-30)
- 周立功教你学C语言编程:教你数组是如何保存指针的(07-31)
- 算法的泛化问题,这些坑你可能都经历过!|周立功教你学软件设计(08-01)