简介
将以下文本粘贴在记事本中,命名为novice.h并放入编译器目录下的include文件夹内即可调用。欢迎补充。
索引
- 排序(升序)
- 快速排序
- 选择排序
- 插入排序
- 冒泡排序
- 打印杨辉三角(需要stdio.h)
- 十进制转R进制
- 二分查找(找不到返回-1)
- 反转字符串(需要string.h)
- 求最大公约数
- 待补充
注意事项
- oj上做题时请不要直接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 c,i,j;
for (i = 0, j = strlen(s) - 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