// //插入排序
//二分查找
int start = 0, end = count - 1,mid = 0;
int n;
printf("please input a number\n");
scanf("%d", &n);
while ( start <= end) {
mid = (start + end) / 2;
if (array[mid] > n) {
end = mid - 1;
} else if (array[mid] < n){
start = mid + 1;
}
else {
break;
}
}
if (array[mid] == n) {
printf("[%2d]: %2d\n", mid , array[mid]);
}else {
printf(" not found\n");
}
用函数处理数组
void swap(int *p1 , int *p2)
{ if (p1 != p2){
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}
void printArray(int count , const int array[])
{
for (int i = 0; i < count; i++) {
printf("array[%2d] = %2d\n", i, array[i]);
}
}
void bubbleSort(int count , int array[])
{
int flag = 1;
for (int i = 0; i < count - 1 && 1 == flag; i++) {
flag = 0;
for (int j = 0; j < count - i - 1; j++) {
if (array[j] < array[j + 1]) {
swap(array + j, array + j + 1);
flag = 1;
}
}
}
}
void selectionSort(int count , int array[])
{
int minIndex = 0;
for (int i = 0; i < count - 1; i++) {
minIndex = i;
for (int j = minIndex + 1; j < count; j++) {
if (array[minIndex] > array[j]) {
minIndex = j;
}
}
if (minIndex != i) {
swap(array + minIndex, array + i);
}
}
}
void insertSort(int count , int array[])
{
for (int i = 1; i < count; i++) {
int j = i;
int temp = array[j];
while ( j > 0 && temp < array [j - 1]) {
array[j] = array [j - 1];
j--;
}
array[j] = temp;
}
}
int halfSeek(int count, const int array[],int target)
{
int start = 0, end = count - 1, mid =0;
while (start <= end) {
mid = (start + end ) / 2 ;
if (array[mid] > target) {
end = mid -1;
} else if (array[mid] < target) {
start = mid - 1;
} else {
return mid;
}
}
return -1;
}