前面已经介绍了c语言的一些基本知识,往下就是实战操作了。工欲善其事,必先利其器,在这里我先说说我用的编程工具吧。
开发环境介绍:
Linux localhost.localdomain 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
编辑器:vim
vim的配置这里先不说了,等单独写一篇详细说明。
1 排序
排序目前我这里写冒泡排序和选择排序,冒泡排序就是像气泡一样,大的气泡上浮的快,小的气泡上浮的慢,这样就分开了,选择排序就是先找一个数,其它的数值和它依次进行比较,最后找到最大或最小的数值进行交换,这样一直进行比较知道按着大小排序结束。
冒泡排序
#include <stdio.h>
int main(void)
{
//定义一个数组
int a[10] = {1,3,8,4,0,9,2,7,5,6};
//定义两个变量
int i = 0;
int j = 0;
int tmp = 0;
printf("排序前\n");
//for循环输出这个数组
for(i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
//下面进行排序
for(i = 0; i < 10-1; i++)
{
for(j = i+1; j < 10; j++)
{
if(a[i] < a[j])
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
printf("排序前\n");
//for循环输出排完序的数组
for(i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
运行结果:
排序前
1 3 8 4 0 9 2 7 5 6
排序前
9 8 7 6 5 4 3 2 1 0
选择排序
#include <stdio.h>
int main(void)
{
//定义一个数组
int a[10] = {1,3,8,4,0,9,2,7,5,6};
//定义变量
int i = 0;
int j = 0;
int k = 0;
int tmp = 0;
printf("排序前\n");
/ /for循环输出这个数组
for(i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
//下面进行排序
for(i = 0; i < 10-1; i++)
{
k = i;
tmp = a[i];
for(j = i+1; j < 10; j++)
{
if(tmp < a[j])
{
tmp = a[j];
k = j;
}
}
if(k != i)
{
tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
printf("排序前\n");
//for循环输出排完序的数组
for(i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
排序前
1 3 8 4 0 9 2 7 5 6
排序前
9 8 7 6 5 4 3 2 1 0
2 二分查找
二分查找,又叫折半查找。就是在一个范围内,一次可以减少一半区域,来查找自己要找的值,因此效率相对较高。不过在这个范围内,值必须是有规律的排放的。
#include <stdio.h>
int main(void)
{
//定义一个有序数组
int a[10] = {0,1,3,5,7,9,11,14,35,60};
//定义变量
int i = 0;
int tmp = 0;
int low = 0;//数组中的最小索引值
int high = 0;//数组中的最大索引值
int mid = 0;//数组中的中间索引值
//输出这个数组
for(i = 0; i < sizeof(a)/sizeof(int); i++)
{
printf("%d ", a[i]);
}
printf("\n");
//二分查找
tmp = 2;
high = sizeof(a) / sizeof(int) - 1;//得到数组中多少个元素
mid = (high - low) / 2;
while(low <= high)
{
if(tmp < a[mid])
{
high = mid - 1 ;
mid = low + (high - low) / 2;
}
else if(tmp > a[mid])
{
low = mid + 1;
mid = low + (high - low) / 2 ;
}
else
{
printf("%d在这个数组里面\n", tmp);
break;
}
}
if(low > high)
{
printf("%d 不在这个数组里面\n", tmp);
}
return 0;
}
总结:
冒泡排序和选择排序,以及折半查找都是很常见的c语言程序,在面试中也是很常见到的,因此在这里写一下。除此之外,我还要说一下,在这里我写这个东西是为了我以后再次回顾知识用的,有时候不会太详细的,对你有用的话,我很高兴能帮助到你,没用的话,希望你去别的地方看看,最后强调一点:不喜勿陪。