一星题较常用的函数

10175101282Mercury edited 7 年,9 月前

简介


将以下文本粘贴在记事本中,命名为novice.h并放入编译器目录下的include文件夹内即可调用。欢迎补充。

索引


注意事项


代码


#ifndef NOVICE_H_INCLUDED
#define NOVICE_H_INCLUDED
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void quick_sort(int s[], int l, int r) //(s[], 0, n-1) ascending order
{ 
    int i, j, x;
    if (l < r)
    {
        i = l;
        j = r;
        x = s[i];
        while (i < j)
        {
            while(i < j && s[j] > x)
                j--;
            if(i < j)
                s[i++] = s[j];


            while(i < j && s[i] < x)
                i++;
            if(i < j)
                s[j--] = s[i];

        }
        s[i] = x;
        quick_sort(s, l, i-1);
        quick_sort(s, i+1, r);
    }
}

void sel_sort(int *num, int n) //ascending order
{ 
    int i, j, min, tmp;

    for (i = 0;i < n - 1; ++i){
        min = i;

        for (j = i + 1; j < n; ++j)
            if (num[min] > num[j]) min = j;


        if (min != i){
            tmp = num[min];
            num[min] = num[i];
            num[i] = tmp;
        }
    }
}

void ins_sort(int *num, int n) //ascending order
{
    int i, j;
    for (i = 1; i < n; ++i){
        for (j = 0; j < i; ++j)
            if (num[j] > num[i]){
                int tmp = num[i], k;
                for (k = i; k > j; --k) num[k] = num[k - 1];
                num[j] = tmp;
                break;
            }
    }
}

void bubble_sort(int *num, int n) // ascending order
{
    int i, j;
    for (i = n - 1; i > 0; --i){
        for (j = 0; j < i; ++j)
            if (num[j] > num[j + 1]){
                int tmp = num[j];
                num[j] = num[j + 1];
                num[j + 1] = tmp;
            }
    }
}

void tri(int m) //Pascal Triangle
{
    int i,j,a[30][30]={{0}};

    for (i = 0; i < m; i++)
        a[i][0] = 1;

    for (i = 1; i < m; i++)
        for (j = 1; j <= i; j++)
            a[i][j] = a[i-1][j-1] + a[i-1][j];

    for (i = 0; i < m; i++){
        for (j = 0; j <= i; j++){
            if (j == i)
                printf("%d", a[i][j]);
            else
                printf("%d ", a[i][j]);
        }
        printf("\n");
    }
}

void TentoR(int a, int b) //a(base 10) to number(base b)
{
    int cnt,number[20];
    if (a == 0)
        return;
    TentoR(a / b, b);
    number[cnt++] = a % b;
}

int bin_search(int *a, int size, int p) //ascending order
{
    int l = 0, r = size - 1;
    while (l <= r){
        int mid = l + (r - l) / 2;
        if (p == a[mid]) return mid;
        else if (p > a[mid]) l = mid + 1;
        else r = mid - 1;
    }
    return -1;
}

void rev_str(char s[]) //reverse string
{ 
    int len = strlen(s), i, j;
        char c;
    for (i = 0, j = len - 1; i < j; i++, j--){
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}

long gcd(long a, long b) //lcm = a * b / gcd(a, b)
{
    return b == 0 ? a : gcd(b, a % b);
}

#endif // NOVICE_H_INCLUDED

Comments

Li Dao

膜膜膜

10175101282Mercury

哇又有大佬回复了

beginning.

大佬大佬

欢迎访问我的主页!http://godweiyang.com

代码块用```包起来

10175101282Mercury

多谢提醒

回调地狱

哇好东西!先Mark一下

帕秋莉_诺蕾姬

厉害啊

10175101282Mercury

复制上来格式有些乱……前两行和最后一行开头都有一个#号,中间的代码除了格式外都没问题。

欢迎访问我的主页!http://godweiyang.com

markdown语法代码块用包起来

#include <stdio.h>