[ create a new paste ] login | about

Link: http://codepad.org/KXrWVfER    [ raw code | output | fork ]

C, pasted on Jul 5:
#include<stdio.h>
#include<stdlib.h>

#define MAX 2000
#define FMAX 20

void swap(int *x,int *y);
void quick(int a[],int left,int right);
int bin_search(int a[],int n,int key);
int lin_search(int a[],int n,int key);

int main(void)
{
  int i;
  int seisu[MAX];
  int kosu,ky,idx0,idx1;
  char fname[FMAX];
  FILE *fp;

  kosu=MAX;/*データ個数をkosuに代入*/
  printf("Input file name:");
  scanf("%s", fname);/*ファイル名の読み込み*/

  fp=fopen(fname, "r");/*ファイルオープン*/

  if(fp==NULL)/*ファイルオープン時のエラー処理*/
    {
      printf("No file found!");
      exit(1);
    }

/*(1)ファイルからデータをkosu個読み込み配列seisuに入れる*/

  printf("Number to search:");
  scanf("%d", &ky);/*キーを変数kyに入力する*/

/*(2)線形探索を行い結果を変数idx0に出力する*/

/*(3)クイックソート及び二分探索を行い結果を変数idx1に出力する*/

/*(4)(2)の線形探索、(3)の二分探索にかかった計算回数を表示する*/

  fclose(fp);/*ファイルクローズ*/
  return(0);
}

void swap(int *x,int *y)
{
  int temp;
  temp=*x;
  *x=*y;
  *y=temp;
}

void quick(int a[],int left,int right)
{
  int pl=left;
  int pr=right;
  int seisu=a[(pl+pr)/2];

  do
    {
      while(a[pl]<seisu)
        pl++;
      while(a[pr]>seisu)
        pr--;
      if(pl<=pr)
        {
          swap(&a[pl],&a[pr]);
          pl++;
          pr--;
        }
    }while(pl<=pr);
  if(left<pr)
    quick(a,left,pr);
  if(pl<right)
    quick(a,pl,right);
}

int bin_search(int a[],int n,int key)
{
  int pl=0;
  int pr=n-1;
  int pc;

  do
    {
      pc=(pl+pr)/2;
      if(a[pc]==key)
        return(pc);
      else if(a[pc]<key)
        pl=pc+1;
      else
        pr=pc-1;
    }while(pl<=pr);

  return(-1);
}

int lin_search(int a[],int n,int key)
{
  int i=0;

  while(1)
    {
      if(i==n)
        return(-1);
      if(a[i]==key)
        return(i);
      i++;
    }
}


Output:
1
Input file name:No file found!


Create a new paste based on this one


Comments: