開(kāi)這個(gè)專(zhuān)題主要是用于維持一種編程狀態(tài),在有算法的情況下.來(lái)解決實(shí)際生活的問(wèn)題是一種很好的編程習(xí)慣.

排序終結(jié) .jpg
- 二分查找
#include <stdio.h>
int BinySerch(int *arr, int temp, int lengh)//設(shè)計(jì)參數(shù),由于是整形數(shù)組,所以我們必須傳遞他
{ //長(zhǎng)度否則數(shù)組傳參時(shí)會(huì)發(fā)生降級(jí)
int left = 0, right = lengh - 1;
int mid ;
while (left <= right)
{
mid = left + (right - left) / 2;
if (temp < arr[mid])
{
right = mid - 1;
}
else if (temp > arr[mid])
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
- 插入排序 *
void insertSort(int *array, int len)
{
int i, j, temp;
for(i = 1; i < len; i ++)
{
temp = array[i];
for(j = i - 1; j >= 0; j --)
{
if(array[j] > temp)
{
array[j + 1] = array[j];
}else
{
break;
}
}
array[j + 1] = temp;
}
}
-
快速排序
*函數(shù)名:swap
*作用:交換兩個(gè)數(shù)的值
*參數(shù):交換的兩個(gè)數(shù)
*返回值:無(wú)
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
return ;
}
void quicksort(int array[], int maxlen, int begin, int end)
{
int i, j;
if(begin < end)
{
i = begin + 1; // 將array[begin]作為基準(zhǔn)數(shù),因此從array[begin+1]開(kāi)始與基準(zhǔn)數(shù)比較!
j = end; // array[end]是數(shù)組的最后一位
while(i < j)
{
if(array[i] > array[begin]) // 如果比較的數(shù)組元素大于基準(zhǔn)數(shù),則交換位置。
{
swap(&array[i], &array[j]); // 交換兩個(gè)數(shù)
j--;
}
else
{
i++; // 將數(shù)組向后移一位,繼續(xù)與基準(zhǔn)數(shù)比較。
}
}
/* 跳出while循環(huán)后,i = j。
* 此時(shí)數(shù)組被分割成兩個(gè)部分 --> array[begin+1] ~ array[i-1] < array[begin]
* --> array[i+1] ~ array[end] > array[begin]
* 這個(gè)時(shí)候?qū)?shù)組array分成兩個(gè)部分,再將array[i]與array[begin]進(jìn)行比較,決定array[i]的位置。
* 最后將array[i]與array[begin]交換,進(jìn)行兩個(gè)分割部分的排序!以此類(lèi)推,直到最后i = j不滿(mǎn)足條件就退出!
*/
if(array[i] >= array[begin]) // 這里必須要取等“>=”,否則數(shù)組元素由相同的值時(shí),會(huì)出現(xiàn)錯(cuò)誤!
{
i--;
}
swap(&array[begin], &array[i]); // 交換array[i]與array[begin]
quicksort(array, maxlen, begin, i);
quicksort(array, maxlen, j, end);
}
}