C语言及程序设计提高例程-27 编写查找和排序函数
2015-02-10 21:35
351 查看
贺老师教学链接 C语言及程序设计提高 本课讲解
用函数实现二分查找
用函数实现选择法算法
用函数实现二分查找
#include <stdio.h> int binary_search(int arr[], int n, int k); #define SIZE 10 int main( ) { int d[SIZE] = {1, 3, 9, 12, 32, 41, 45, 62, 75, 77}; int low, high,mid,key,index=-1; printf("Input a key you want to search: "); scanf("%d" , &key); index = binary_search(d, SIZE, key); if(index >= 0) printf("The index of the key is %d .\n", index); else printf("Not found.\n"); return 0; } /* 功能:在长度为n的有序数组中查找k出现的位置 */ int binary_search(int arr[], int n, int k) { int i=-1; int low=0,high=n-1,mid; while(low<=high) { mid=(low+high)/2; if(arr[mid]==k) { i=mid; break; } else if(arr[mid]>k) high=mid-1; else low=mid+1; } return i; }
用函数实现选择法算法
#include <stdio.h> int main( ) { void select_sort(int array[],int n); //函数声明 int a[10]= {4,3,7,9,1,5,0,8,2,6},i; select_sort(a,10); //函数调用,数组名作实参 printf("the sorted array:\n"); for(i=0; i<10; i++) //输出10个已排好序的数 printf("%d ", a[i]); printf("\n"); return 0; } void select_sort(int array[],int n) //形参array是数组名 { int i,j,k,t; for(i=0; i<n-1; i++) { k=i; //先设第i个就为最小 for(j=i+1; j<n; j++) if(array[j]<array[k]) k=j; //通过循环,得到k为最小 t=array[k]; //交换a[i]和a[k] array[k]=array[i]; array[i]=t; } return; }
相关文章推荐
- 第7周 C语言及程序设计提高例程-27 编写查找和排序函数(有疑问)
- 第4周 C语言及程序设计提高例程-20 经典:查找的艺术
- C语言提高-27讲: 编写查找和排序函数(查成绩)
- C语言提高-第26/27讲: 实现线性表基本操作的函数/编写查找和排序函数
- C语言及程序设计提高例程-20 经典:查找的艺术
- C语言及程序设计提高例程-3 体验自定义函数
- C语言及程序设计提高例程-5 函数的参数
- C语言及程序设计提高例程-26 实现线性表基本操作的函数
- C语言及程序设计提高例程-12 变量的存储类别
- C语言及程序设计提高例程-35 使用指针操作二维数组
- C语言及程序设计提高例程-22 用指针法访问数组元素
- C语言及程序设计提高例程-25 指针作函数参数
- C语言及程序设计提高例程-6 参数传递方式:传值与传地址
- C语言及程序设计提高例程-29 实战字符串处理四例
- C语言及程序设计提高例程-33 二维数组元素的引用
- C语言及程序设计提高例程-24 数组名作为函数参数
- C语言及程序设计提高例程-10 调试技术:进入函数内部去
- C语言及程序设计提高例程-9 函数的嵌套调用
- C语言及程序设计提高例程-16 数组的引入
- C语言及程序设计提高例程-17 一维数组的定义和引用