일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- html charset
- #3차원배열
- html id
- #C++ has~a
- mac terminal command
- html5 new tag
- html video
- #성적관리프로그램
- #CallByAddress
- #2차원배열
- #C++ 연산자함수오버로딩
- html object
- relative path
- html code
- git flow
- html youtube
- border-box
- html multimedia
- 하이퍼레저패브릭
- 토큰경제
- #1차원배열
- #자바상속#자바이즈어#is~a
- docker example
- #JAVASCRIPT
- html plug-in
- #android activity
- #bubbleSort
- #binary
- #다차원포인터
- hyperledger transaction
- Today
- Total
A sentimental robot
정렬(sorting) 본문
bubble sort
#include<stdio.h>
void sort(int *v, int n){
int i,j;
int tmp;
int flag;
for(i = 0 ; i< n-1 ; i++){
flag = 0;
for(j = 0 ; j<n-1-i ; j++){
if(v[j] > v[j+1]){
tmp = v[j];
v[j] = v[j+1];
v[j+1] = tmp;
flag = 1;
}
}
if(flag == 0) break; // sorting이 끝나면 for문 나오게 함
}
}
void main()
{
int x[10] = {75,27, 49,10,93,23,76,11,53,77};
int j;
for(j =0 ; j< 10 ; j++ ){
printf(" %d",x[j]);
}
puts("\n");
sort(x,10);
for(j = 0 ; j<10 ; j++)
printf(" %d",x[j]);
puts("\n");
}
선형탐색
#include<stdio.h>
void sort(int *v, int n){
int i,j;
int tmp;
int flag;
for(i = 0 ; i< n-1 ; i++){
flag = 0;
for(j = 0 ; j<n-1-i ; j++){
if(v[j] > v[j+1]){
tmp = v[j];
v[j] = v[j+1];
v[j+1] = tmp;
flag = 1;
}
}
if(flag == 0)break;
}
}
int search(int v[], int n, int what){
//선형 탐색 > 처음부터 끝까지 찾아봄
int i;
for(i = 0; i < n ; i++){
if(what == v[i]) return i;
}
return -1;
}
void main()
{
int x[10] = {75,27, 49,10,93,23,76,11,53,77};
int j;
int found;
found = search(x,10,23); // 찾고자 하는 데이터 값( 23 )의 인덱스 리턴( x[5] )
printf("%d\n", found); // 못찾으면 -1 리턴
for(j =0; j< 10 ; j++ ){
printf(" %d",x[j]);
}
puts("\n");
sort(x,10);
for(j = 0 ; j<10 ; j++)
printf(" %d",x[j]);
puts("\n");
}
이진 탐색 : sorting이 된 상태에서 데이터 검색
#include<stdio.h>
void sort(int *v, int n){
int i,j;
int tmp;
int flag;
for(i = 0 ; i< n-1 ; i++){
flag = 0;
for(j = 0 ; j<n-1-i ; j++){
if(v[j] > v[j+1]){
tmp = v[j];
v[j] = v[j+1];
v[j+1] = tmp;
flag = 1;
}
}
if(flag == 0)break;
}
}
int search(int v[], int n, int what){
int low, high, mid;
low = 0;
high = n-1;
while(low <= high){
mid = (low +high)/2;
if(what < v[mid]){
high = mid-1;
}else if(what >v[mid]){
low =mid+1;
}else { // what이 v[mid] 같은 경우! 데이터 찾음
return v[mid];
}
}
return -1;
}
void main()
{
int x[10] = {75,27, 49,10,93,23,76,11,53,77};
int j;
int found;
sort(x,10);
found = search(x,10,23); // 찾고자 하는 데이터 값(23)의 인덱스 리턴(x[5])
printf("%d\n", found); // 못찾으면 -1 리턴
}
'C ' 카테고리의 다른 글
sprintf , srand (0) | 2018.01.03 |
---|---|
atoi함수 (0) | 2018.01.03 |
typedef structure (0) | 2018.01.03 |
함수포인터 (0) | 2018.01.03 |
strdup함수 활용예제 (0) | 2018.01.03 |