C语言编程:选择法、冒泡法排序与折半查找示例

需积分: 9 1 下载量 152 浏览量 更新于2024-09-21 1 收藏 145KB DOC 举报
"C语言编程经典例子" C语言是一种强大的、高效且广泛应用的编程语言,尤其在系统编程、软件开发和嵌入式系统中占据重要地位。以下三个例子展示了C语言在排序和查找算法中的应用: 1. **选择法排序(Selection Sort)** 选择法排序是一种简单直观的排序算法,其主要思想是找到数组中最小的元素并将其放到正确的位置,然后对剩下的元素重复此过程。在C语言实现中,这个过程由两层循环完成。外层循环控制排序的轮数,内层循环则负责在未排序部分找到最小元素并将其与当前位置的元素交换。这种方法的时间复杂度为O(n^2),不适用于大数据量的排序。 ```c for(i=0; i<10; i++) // 外层循环 { for(j=i+1; j<10; j++) // 内层循环 if(a[j]<a[i]) // 比较并交换 { k=a[i]; a[i]=a[j]; a[j]=k; } } ``` 2. **冒泡法排序(Bubble Sort)** 冒泡法排序是另一种简单的排序算法,它通过重复遍历数组,每次比较相邻元素并根据需要交换它们来逐步排序。C语言实现同样采用两层循环,外层控制轮数,内层控制相邻元素的比较和交换。同样,时间复杂度为O(n^2)。 ```c for(i=0; i<9; i++) // 外层循环 { for(j=0; j<9-i; j++) // 内层循环 if(a[j]>a[j+1]) // 交换相邻元素 { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } ``` 3. **折半法查找(Binary Search)** 折半法查找,又称二分查找,适用于有序数组。它通过不断地将数组范围减半,快速定位目标元素。基本步骤是先找到数组中间元素,与目标值比较,如果目标值小于中间元素,则在左半部分查找,反之在右半部分查找,直到找到目标元素或搜索范围为空。 ```c while (low <= high) { mid = (low + high) / 2; if (array[mid] == target) return mid; else if (array[mid] < target) low = mid + 1; else high = mid - 1; } // 如果未找到,返回-1表示不存在 return -1; ``` 折半查找的效率显著高于线性查找,其时间复杂度为O(log n)。 这三个例子展示了C语言的基础编程技巧,包括数组操作、条件判断、循环控制以及基本的算法实现。掌握这些基础概念和技巧对于深入学习C语言和理解更复杂的算法至关重要。