C语言及程序设计提高例程-27 编写查找和排序函数

贺老师教学链接  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;
}
时间: 2024-12-02 14:42:47

C语言及程序设计提高例程-27 编写查找和排序函数的相关文章

C语言及程序设计提高例程-36 多维数组作函数参数

贺老师教学链接  C语言及程序设计提高 本课讲解 用多维数组名作函数参数 #include <stdio.h> int max_value(int array[][4]); int main( ) { int a[3][4]= {{11,32,45,67},{22,44,66,88},{15,72,43,37}}; printf("max value is %d\n", max_value(a)); return 0; } int max_value(int array[]

C语言及程序设计提高例程-10 调试技术:进入函数内部去

贺老师教学链接  C语言及程序设计提高 本课讲解 老革命遇上新问题(哪错了?) #include <stdio.h> float max(float x, float y); int main () { float a,b,c; scanf("%f %f", &a, &b); c = max(a, b) ; printf("The max is %f\n", c); return 0; } float max(float x, float

C语言及程序设计提高例程-31 编制自己的字符串函数

贺老师教学链接  C语言及程序设计提高 本课讲解 字符串复制 #include <stdio.h> char *scopy(char *str1, const char *str2); int main() { char s1[50]; scopy(s1, "I am happy."); printf("%s\n", s1); return 0; } char *scopy(char *str1, const char *str2) { int i=0,

C语言及程序设计提高例程-30 字符和字符串处理函数

贺老师教学链接  C语言及程序设计提高 本课讲解 统计数字字符个数 #include <stdio.h> int main() { char str[50]; int i=0, n=0; printf("输入字符串:"); gets(str); while(str[i]!='\0') { if(isdigit(str[i])) n++; i++; } printf("其中的数字字符个数是: %d\n",n); return 0; }

C语言及程序设计提高例程-25 指针作函数参数

贺老师教学链接  C语言及程序设计提高 本课讲解 例:冒泡排序函数的新写法 #include <stdio.h> void bubblesort(int*, int); int main( ) { int i,a[10]= {3,5,9,1,3,6,-9,-7,10,12}; bubblesort(a,10); for(i=0; i<10; i++) printf("%d ", a[i]); return 0; } void bubblesort(int *p, in

C语言及程序设计提高例程-7 返回指针的函数

贺老师教学链接  C语言及程序设计提高 本课讲解 返回指针的函数 #include <stdio.h> int *max(int *x, int *y) { int *t; if(*x > *y) t = x; else t = y; return t; } int main() { int a, b, *p; scanf("%d %d", &a, &b); p = max(&a, &b); printf("max = %d

C语言及程序设计提高例程-15 小小型应用系统开发指导(三)

贺老师教学链接  C语言及程序设计提高 本课讲解 说明:     本程序在学习者仅掌握了基本数据类型和控制结构.函数的前提下设计,模拟银行储蓄系统的基本功能.     程序运行前,请在程序所在文件夹中,自建文件password.txt,保存123456作为初始密码,自建文件balance.dat,保存1000,作为初始的余额.    运行结束后,对数据所做的所有修改均可以利用文件保存下来.     与上一个版本相比,我们学习了模块化程序设计及用函数的实现方法,所以有能力重构了整个软件的结构.本程

C语言及程序设计提高例程-16 数组的引入

贺老师教学链接  C语言及程序设计提高 本课讲解 引子:求5位同学的平均成绩 #include <stdio.h> int main( ) { int a1, a2, a3, a4, a5; int total=0, ave; scanf("%d %d %d %d %d", &a1,&a2,&a3,&a4,&a5); total+=a1; total+=a2; total+=a3; total+=a4; total+=a5; ave=

C语言及程序设计提高例程-35 使用指针操作二维数组

贺老师教学链接  C语言及程序设计提高 本课讲解 使用指向二维数组元素的指针 #include <stdio.h> int main( ) { int a[3][4]= {1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0]; p<a[0]+12; p++) { printf("%3d ",*p); } return 0; } 使用指向一维数组的指针 #include <stdio.h> int main(