c语言学习----基本篇(下)

前面已经介绍了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;
}

运行结果:

排序前

扫描二维码关注公众号,回复: 8992414 查看本文章

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语言程序,在面试中也是很常见到的,因此在这里写一下。除此之外,我还要说一下,在这里我写这个东西是为了我以后再次回顾知识用的,有时候不会太详细的,对你有用的话,我很高兴能帮助到你,没用的话,希望你去别的地方看看,最后强调一点:不喜勿陪

发布了15 篇原创文章 · 获赞 0 · 访问量 1805

猜你喜欢

转载自blog.csdn.net/jiankangzhu/article/details/51089926