快速、插入、冒泡排序,二分查找

void swap(int *a,int*b)
{

int temp = *a;
*a = *b;
*b = temp;

}

void quicksort(int arr[],int left,int right) //快速排序
{

if (left>right)
{
    return;
}
int temp = arr[left];
int i = left;
int j = right;
while (i<j)
{
    while (arr[j]>=temp)
    {
        if (j <=i)
        {
            break;
        }
        j--;

    }
    while (arr[i]<=temp)
    {
        if (i>=j)
        {
            break;
        }
        i++;
    }
    if (i < j)
    {
        swap(&arr[i], &arr[j]);
    }
}

swap(&arr[left], &arr[i]);
quicksort(arr, left, i - 1);
quicksort(arr, i + 1, right);

}

void babblesort(int arr[],int length) //冒泡排序
{

for (int i = 0; i < length - 1;i++)
{
    for (int j = i; j < length-1;j++)
    {
        if (arr[j]>arr[j+1])
        {
            swap(&arr[j], &arr[j + 1]);
        }
    }
}

}
//二分查找
int binaryFind(int arr[],int left,int right,int key)
{

if (left>right)
{
    return -1;
}
int mid = (left + right) / 2;
if (arr[mid]==key)
{
    return mid;
}
if (arr[mid]>key)
{
    return binaryFind(arr, left, mid-1, key);
}
else  
{
    return binaryFind(arr, mid+1, right, key);
}

}

//插入排序
void insertsort(int arr[],int length)
{

for (int i = 1; i < length;i++)
{
    int temp = arr[i];;
    int j = i - 1;

    for ( j = i-1; j >=0;j--)
    {

        if (arr[j] >= temp)
        {
            arr[j + 1] = arr[j];//right shift
        }
        else
        {
            break;
        }

    }
    arr[j + 1] = temp;
}

}

猜你喜欢

转载自blog.csdn.net/double_s_c/article/details/76647824
今日推荐