冒泡排序、选择排序、快速排序、二分法查找

本文提供了三种排序算法(冒泡排序、选择排序、快速排序)的C语言实现,并介绍了两种二分搜索方法。这些算法是计算机科学的基础,对于理解数据结构和算法原理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从网上学习,并调试通过:

void bubble_sort(int array[], int n)
{
    int i, j, temp;
    
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n-i; j++)
        {
            if (array[j] > array[j+1])
            {
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }


            printf("i = %d\n", i);
        }
    }
    
    return;
}


void select_sort(int buf[], int n)
{
    int temp;
    int pos;
    int i,j;
    for (i = 0; i < n-1; i++)
    {
        temp = buf[i];
        pos = i;


        for (j=i+1; j<n; j++)
        {
            if (buf[j] < temp)
            {
                temp = buf[j];
                pos = j;
            }
        }


        buf[pos] = buf[i];
        buf[i] = temp;
    }
}


void quick_sort(int array[], int low, int high)
{
    int left, right, middle;
    int temp;


    left = low;
    right = high;
    middle = (left + right)/2;


    while (left < right) {
        while (left<high && array[left]<array[middle])
            left++;


        while (right>low && array[right]>array[middle])
            right--;


        if (left <= right) {
            temp = array[left];
            array[left] = array[right];
            array[right] = temp;
            left++;
            right--;
        }
    }
    
    if (left < high)
        quick_sort(array, left, high);


    if (right > low)
        quick_sort(array, low, right);


}

int search(int *a, int key, int low, int high)
{
    int mid;
    if(low > high)
        return -1;
    mid = (low + high)/2;
    if(a[mid] == key) 
        return mid;
    else if(a[mid]>key)
        return search(a, key, low, mid-1);
    else return search(a,key,mid+1, high);
}
    
int search_c_plus_plus(int *a, int key, int length)
{
    int mid;


    if(length <= 0)
        return -1;


    int front = 0;
    int end = length -1;
    mid = (front + end)/2;
    
    while(front<end && a[mid] != key)
    {
        if(a[mid] < x)
            front = mid +1;
        if (a[mid] > x)
            end = mid-1;
        mid = (front + end)/2;
    }


    if(a[mid] != x)
        printf("not find.\n");
    else {
        printf("find it, in %d\n", mid+1);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值