首页 > 代码库 > 8.8 冒泡排序 选择排序 二分查找 递归使用
8.8 冒泡排序 选择排序 二分查找 递归使用
冒泡排序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100000
#define M 100000
void show_arr(int * a,int n)
{
int i;
for(i = 0; i < n; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
void init_arr(int * a, int n)
{
int i;
srand(time(NULL));
for(i = 0; i < n ; ++i)
a[i] = rand() % M;
}
void sort_maopao(int * a , int n)
{
int i,j,temp;
for(i = 0; i < n - 1 ; i++)
{
for( j = 0 ; j < n - i - 1 ; j++)
{
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
return;
}
int main()
{
int a[N];
init_arr(a , N);
// show_arr(a, N);
sort_maopao(a, N);
// show_arr(a, N);
return 0;
}
选择排序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100000
#define M 100000
void show_arr(int * a,int n)
{
int i;
for(i = 0; i < n; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
void init_arr(int * a, int n)
{
int i;
srand(time(NULL));
for(i = 0; i < n ; ++i)
a[i] = rand() % M;
}
void sort_xuanze(int * a , int n)
{
int i,j,min,temp;
for(i = 0; i < n - 1 ; i++)
{
min = i;
for( j = i+1 ; j < n ; j++)
if(a[min] > a[j])
min = j;
temp = a[min];
a[min] = a[i];
a[i] = temp;
}
return;
}
int main()
{
int a[N];
init_arr(a , N);
// show_arr(a, N);
sort_xuanze(a, N);
// show_arr(a, N);
return 0;
}
二分查找:查找一个元素在某个数组里(必须是有序的数组)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
#define M 100
void show_arr(int * a,int n)
{
int i;
for(i = 0; i < n; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
void init_arr(int * a, int n)
{
int i;
srand(time(NULL));
for(i = 0; i < n ; ++i)
a[i] = rand() % M;
}
void sort_xuanze(int * a , int n)
{
int i,j,min,temp;
for(i = 0; i < n - 1 ; i++)
{
min = i;
for( j = i+1 ; j < n ; j++)
if(a[min] > a[j])
min = j;
temp = a[min];
a[min] = a[i];
a[i] = temp;
}
return;
}
int erfen_find(int * a, int n , int key)
{
int mid , l = 0 , r = n - 1; //mid是中间的坐标,l是左坐标,r是右坐标
while( l <= r)
{
mid = ( l + r )/2;
if( a[mid] < key)
l = mid + 1;
else if ( a[mid] > key)
r = mid - 1;
else
return 1;
}
return 0;
}
int main()
{
int a[N];
init_arr(a , N);
//show_arr(a, N);
sort_xuanze(a, N);
show_arr(a, N);
int key;
scanf("%d",&key);
if(erfen_find(a , N ,key)) //10 需要查找的数
printf("find!\n");
else
printf("not find!\n");
return 0;
}
递归:(阶乘的实现)
#include <stdio.h>
#include <stdlib.h>
int factorial(int n)
{
if( n == 0)
return 1;
n *= factorial(n - 1);
}
int main()
{
int num = factorial(6);
printf("%d\n",num);
return 0;
}
递归打印三角形:
#include <stdio.h>
#include <stdlib.h>
void fun(int n)
{
if (n == 0) return;
fun(n - 1);
int i;
for (i = 0; i < n; ++i)
printf("* ");
putchar(‘\n‘);
}
int main()
{
fun(5);
return 0;
}
来自为知笔记(Wiz)
8.8 冒泡排序 选择排序 二分查找 递归使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。