알고리즘 소결

2356 단어

 

1. 누적법(데이터 누적 또는 누적)


응용: 구화 구적
누적법으로 1부터 a까지의 계승과 (1!+2!+...+a!)코드는 다음과 같습니다.
#include
int cheng(int i)              // 
{
     if (i==1)
      return 1; 
     return cheng(i-1)*i;

}                                                   
int sum(int i)            // ( )
{
     if(i==1)
      return 1;
     return cheng(i-1)*i+sum(i-1);
}
void main()
{
     int a=0;
     scanf("%d",&a);
     printf("%d",sum(a));
}

 

2. 감시치법: 여러 원소 중에서 왼쪽에서 오른쪽으로 이동하는 과정에서 보초병을 통해 현재 최치를 가리킨다(매번 비교할 때마다 비교적 큰 값을 보초병에게 부여하고 반복이 완성될 때 보초병이 최대치이다)

        应用:求最值

 

通过监哨值法求最大值代码如下:

#include
void main()
{

     int listen,num,i=2;
     scanf("%d",&listen);   // 
     while(i<=10)
     {
          scanf("%d",&num);
          if(listen

 

3. 거품 정렬 순서:


그것은 정렬할 수열을 반복해서 방문하여 한 번에 두 요소를 비교하고, 만약 그들의 순서가 틀리면 그들을 교환할 것이다.수열을 방문하는 작업은 더 이상 교환이 필요하지 않을 때까지 반복적으로 진행되는 것이다. 즉, 이 수열은 이미 정렬이 끝났다는 것이다.이 알고리즘의 이름은 큰 원소가 교환을 통해 천천히 수열의 맨 위로 뜨기 때문에'거품 정렬'이라고 불린다.
거품 정렬 알고리즘의 원리는 다음과 같다.
비교적 인접한 요소.만약 첫 번째가 두 번째보다 크다면, 그들 둘을 교환할 것이다..
모든 인접 요소에 대해 같은 작업을 하고 첫 번째 쌍에서 마지막 쌍으로 시작합니다.이 점에서 마지막 원소는 가장 큰 수일 것이다..
모든 요소에 대해 위의 절차를 반복하고 마지막을 제외하고..
한 쌍의 숫자가 비교할 필요가 없을 때까지 점점 적어지는 원소에 대해 위의 절차를 반복한다
하나의 그룹을 거품으로 정렬하여 작은 배열에서 큰 배열로 코드를 다음과 같이 한다.
#include

void main()
{
	int buf[10]={15,10,2,-9,3,8,14,6,5,7};
	int i=0,j=0,x;
	int temp;
	for(i=0;i<10;i++)	//
	{
		//   0-1  1-2 2-3 3-4  8-9
		for(j=0;j<10-i-1;j++) // i , 
		{
			if(buf[j]


삽입법
매번 탁자 위에서 카드를 뽑아서 손에 넣은 순서가 정해진 카드에 끼워 넣는 셈이다.
앞의 숫자는 이미 정렬되었기 때문에 매번 판단이 끝난 후에 앞의 비교적 큰 숫자를 한 자리 뒤로 이동하면 된다. 최종적으로 빈 자리에temp를 보충하면 된다
구현 코드는 다음과 같습니다.
#include
void main()
{
        int buf[]={1,6,4,7,3,9};
// 
        int i=1,j,temp;//i :    i : 

        for(i=1;i<6;i++)
        {
                j=i;
                temp=buf[i];
                if(buf[j]0&&temp

 
 

좋은 웹페이지 즐겨찾기