2种方法告诉你C语言中的经典算法

来源:爱站网时间:2020-07-25编辑:网友分享
C语言有很多典型的算法,这种算法是许多人的智慧决策,是程序设计中常用的算法。这里面包含了很多算法思想。掌握这种算法有助于学习更高级更难的算法,为自己的算法学习打下坚实的基础,下面就让爱站技术频道小编为你介绍2种方法告诉你C语言中的经典算法,参考下文了解一下吧!

C语言有很多典型的算法,这种算法是许多人的智慧决策,是程序设计中常用的算法。这里面包含了很多算法思想。掌握这种算法有助于学习更高级更难的算法,为自己的算法学习打下坚实的基础,下面就让爱站技术频道小编为你介绍2种方法告诉你C语言中的经典算法,参考下文了解一下吧!

C经典算法之二分查找法

1.根据key查找所在数组的位置

#include 
/*
 key = 9;
 1 2 3 4 5 6 7 8
 arr 3, 4, 5, 7, 9 , 11, 21, 23
 low = 1  mid = (low + high)/2 = 4      high = 8;
 one   arr[mid] = 7  9  so low = 5 ,   high = mid - 1 = 5 mid = 5;
 arr[mid] = 9 == key

 if(key = 10) low = mid + 1 > high

 */
int main(int argc, const char * argv[])
{
 int findByHalf(int arr[], int len, int key);

 int arr[] = {3, 4 , 5, 7, 9 , 11, 21, 23};
 int len = sizeof(arr)/sizeof(int);

 int index = findByHalf(arr, len, 88);

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

int findByHalf(int arr[], int len, int key){
 int low = 0;
 int high = len - 1;

 int mid ;


 while(low  arr[mid]) {
   low = mid + 1;
  //左边查找
  }else if (key > arr[mid]) {
   high = mid - 1;
  }else{
   return mid;
  }

 }
 return -1;
}

2.插入一个数,得到其所在数组的位置

#include 
/*
 key = 9;
 1 2 3 4 5 6 7 8
 arr 3, 4, 5, 7, 9 , 11, 21, 23
 low = 1  mid = (low + high)/2 = 4      high = 8;
 one   arr[mid] = 7  9  so low = 5 ,   high = mid - 1 = 5 mid = 5;
 arr[mid] = 9 == key

 if(key = 10) low = mid + 1 > high

 */
int main(int argc, const char * argv[])
{
 int findByHalf(int arr[], int len, int key);

 int arr[] = {3, 4 , 5, 7, 9 , 11, 21, 23};
 int len = sizeof(arr)/sizeof(int);

 int index = findByHalf(arr, len, 88);

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

int insertByHalf(int arr[], int len, int key){
 int low = 0;
 int high = len - 1;

 int mid ;


 while(low  arr[mid]) {
   low = mid + 1;
  //左边查找
  }else if (key > arr[mid]) {
   high = mid - 1;
  }else{
   //如果arr[mid] == key
   //就把key插入到这个数的后面
   return mid + 1;
  }

 }
 //如果low > high 说明 key > arr[mid];
 //就把key插入到low对应的 这个数的位置
 return low;
}

总的来说,2种方法告诉你C语言中的经典算法是要从多方面结合的,我们在选择时一定要仔细对比与询问,找到一个适合自己操作的方法。

上一篇:C语言初学者基础课程的判断

下一篇:C语言中联合体Univon的实例详细说明

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载