사1진

일상 2012.08.10 19:11

[C]-선택정렬_2

Programing/C 2012.07.17 09:36

선택정렬_2

-선택정렬1은 기준값이 검사하는값보다 작으면 일일히 전부 바꿔주었지만

 기준값보다 작은 값을 발견하면 그 값을 기준값에 넣어주고 나온후 값을 바꿔주기 때문에 

 선택정렬1보다 성능이 좋 다고 생각된다.




#include<stdio.h>

#include<stdlib.h>

int main(void)

{

int i,temp,j;

int *a;

int Arrow;

int arraylen;


printf("배열의 길이를 몇개로 하시겠습니까?");

scanf("%d",&arraylen);


a = (int*)malloc(arraylen*sizeof(int));

printf("%d길이의 배열에 값을 입력\n",arraylen);

for(i=0;i<arraylen;i++)

{

scanf("%d",&a[i]);

}


for(i=0;i<arraylen;i++)

{

Arrow = i;

for(j=i+1;j<arraylen;j++)

{

if(a[Arrow] > a[j])

{

Arrow = j;

}

}

temp=a[i];

a[i]=a[Arrow];

a[Arrow]=temp;

}


for(i=0;i<arraylen;i++)

{

printf("%5d",a[i]);

}


return 1;

}

'Programing > C' 카테고리의 다른 글

[C]-선택정렬_2  (0) 2012.07.17
[C]-이진검색  (0) 2012.07.16
[C]-삽입정렬  (0) 2012.07.16
[C]-선택정렬_1  (0) 2012.07.16

[C]-이진검색

Programing/C 2012.07.16 14:19

이진검색

-이진검색은 데이터를 찾는 방식으로 반드시 데이터가 정렬이 되어있어야 합니다.


#include<stdio.h>


int main(void)

{

int i,temp,j;

int *a; 

int arraylen; //배열길이

int left,right,mid; //검색

int find,result=-1;


printf("배열의 길이를 몇개로 하시겠습니까?");

scanf("%d",&arraylen);

a = (int*)malloc(arraylen*sizeof(int));

printf("%d 길이의 배열에 값을 입력\n",arraylen);

for(i=0;i<arraylen;i++)

{

scanf("%d",&a[i]);

}


//정렬

for(i=0;i<arraylen;i++)

{

for(j=i+1;j<arraylen;j++)

{

if(a[i]>a[j])

{

temp = a[i];

a[i] = a[j];

a[j] = temp;

}

}

}



printf("찾고자 하는 정수 : \n");

scanf("%d",&find);


left = 0;

right = arraylen-1;

for(;left<=right;)

{

mid = (left+right)/2;

if(find == a[mid])

{

result = mid;

break;

}

else if(find < a[mid])

{

right = mid-1;

}

else

{

left = mid+1;

}

}

if(result == -1)

{

printf("찾는데 실패했습니다\n");

}

else

{

printf("성공적으로 검색했습니다 : %d\n",a[result]);

}

return 0;

}




이진검색.c



'Programing > C' 카테고리의 다른 글

[C]-선택정렬_2  (0) 2012.07.17
[C]-이진검색  (0) 2012.07.16
[C]-삽입정렬  (0) 2012.07.16
[C]-선택정렬_1  (0) 2012.07.16