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

来源:互联网 发布:无线路由器mac绑定 编辑:程序博客网 时间:2024/06/04 21:51

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;}

}

阅读全文
0 0
原创粉丝点击