알고리즘 구현 노트(지속 업데이트)
7020 단어 복습 노트
거품 정렬
#include
#include
#include
static void bubble_sort(int array[],int n)
{
int i,j,tmp;
for(j=0;jarray[i+1])
{
tmp = array[i];
array[i] = array[i+1];
array[i+1] = tmp;
}
}
}
}
int main (int argc, char **argv)
{
int a[6] = {5,2,6,4,1,3};
bubble_sort(a,6);
int i = 0;
for(i;i<6;i++)
printf("%d
",a[i]);
return 0;
}
strstr(판단 서브열)
#include
#include
#include
#include
const char *my_strstr(const char *str,const char *sub_str)
{
int i;
for(i=0;str[i]!='\0';i++)
{
int tmp = i;
int j=0;
while(str[i++]==sub_str[j++])
{
if(sub_str[j]=='\0')
return &str[tmp];
}
i = tmp;
}
return NULL;
}
int main(void)
{
char *s1="12345";
char *s2="34";
printf("%s
",my_strstr(s1,s2));
}
strcpy (문자열 복사)
#include
#include
#include
#include
char *my_strcpy(char *dest, const char *src)
{
assert(dest);
assert(src);
char *tmp = dest;
while((*dest++=*src++)!='\0')
;
return tmp;
}
int main(int argc, char ** argv)
{
char a[10];
char *b = "hello";
printf("%s
",my_strcpy(a,b));
return 0;
}
strncpy (하위 문자열 복사 전 n 바이트)
#include
#include
#include
#include
char *my_strncpy(char *dst, const char *src,size_t count)
{
assert(dst&&src);
char *tmp = dst;
while(count)
{
if((*dst=*src)!=0)
{
dst++;
src++;
}
count--;
}
*dst = '\0';
return tmp;
}
int main()
{
char a[5] = "hello";
char *b = "12345";
printf("%s
",my_strncpy(a,b,6));
}
strcat (문자열 연결)
#include
#include
#include
#include
char *my_strcat(char *dest, const char *src)
{
assert(dest);
assert(src);
char *tmp = dest;
while(*dest)
dest++;
while((*dest++=*src++)!='\0')
;
return tmp;
}
int main(int argc, char ** argv)
{
char a[10] = "world";
char *b = "hello";
printf("%s
",my_strcat(a,b));
return 0;
}
strncat
#include
#include
#include
#include
char *my_strncat(char *dest, const char *src, size_t count)
{
assert(dest);
assert(src);
char *tmp = dest;
if(count)
{
while(*dest)
dest++;
while((*dest++=*src++)!='\0')
{
if(--count==0)
{
*dest = '\0';
break;
}
}
}
return tmp;
}
int main(int argc, char ** argv)
{
char a[10] = "world";
char *b = "hello";
printf("%s
",my_strncat(a,b,3));
return 0;
}
strcmp (문자열 비교)
#include
#include
#include
#include
int my_strcmp(const char *cs, const char *ct)
{
assert(cs);
assert(ct);
unsigned char c1,c2;
while(1)
{
c1 = *cs++;
c2 = *ct++;
if(c1!=c2)
return c1 < c2 ? -1 : 1;
if(!c1)
break;
}
return 0;
}
int main(int argc, char ** argv)
{
char a[10] = "gello";
char *b = "hello";
printf("%d
",my_strcmp(a,b));
return 0;
}
memmove:
#include
#include
void my_memmove(void *p1,void const *p2,size_t count)
{
assert(p1);
assert(p2);
char *dest = (char *)p1;
char *src = (char *)p2;
if((dest > src) && (dest
memcpy
void *memcpy(void *dest, const void *src, size_t count)
{
char *tmp = dest;
const char *s = src;
while (count--)
*tmp++ = *s++;
return dest;
}
문자열 역순
#include
#include
#include
#include
char *reverse(char *dest, const char *src)
{
assert(dest);
assert(src);
char *tmp = dest;
int len,i;
len = strlen(src);
dest[len] = '\0';
for(i=0;i
이분법
#include
//
int recurbinary(int *a, int key, int low, int high)
{
int mid;
if(low > high)
return -1;
mid = low + (high-low)/2;
if(a[mid] == key) return mid;
else if(a[mid] > key)
return recurbinary(a,key,low,mid -1);
else
return recurbinary(a,key,mid + 1,high);
}
//
int binary( int *a, int key, int n )
{
int left = 0, right = n - 1, mid = 0;
mid = left + (right - left) / 2;
while( left < right && a[mid] != key )
{
if( a[mid] < key ) {
left = mid + 1;
} else if( a[mid] > key ) {
right = mid;
}
mid = ( left + right ) / 2;
}
if( a[mid] == key )
return mid;
return -1;
}
int main()
{
int a[] = {1,2,3,4,5,6,7,8,9,12,13,45,67,89,99,101,111,123,134,565,677};
int b[] = {677,1,7,11,67};
int i;
for( i=0; i
volatile 키워드
volatile로 정의된 변수는 이 변수가 예상치 못한 변화를 일으킬 수 있음을 나타냅니다. 이 변수를 사용할 때 레지스터에 저장된 백업을 사용하지 않고 메모리에서 데이터를 다시 읽어야 합니다.
eg:
(1) 병렬 장치의 하드웨어 레지스터;상태 레지스터
(2) 서비스 중단 서브루틴에서 접근할 수 있는 비자동 변수;
(3) 다중 스레드 응용에서 몇 개의 임무에 의해 공유되는 변수;
static 키워드
(1) 함수 체내static 변수의 작용 범위는 이 함수체로 auto 변수와 다르며 이 변수의 메모리는 한 번만 분배되기 때문에 그 값은 다음 호출 시 지난번 값을 유지한다.(2) 모듈 내의static 전역 변수는 모듈 내에서 사용하는 함수에 접근할 수 있으나 모듈 밖의 다른 함수에 접근할 수 없다.(3) 모듈 내의static 함수는 이 모듈 내의 다른 함수에만 호출되고 이 함수의 사용 범위는 성명된 모듈에 제한된다.
const 키워드
(1) 변수가 바뀌는 것을 막으려면const 키워드를 사용할 수 있습니다.이const 변수를 정의할 때, 일반적으로 그것을 초기화해야 한다. 왜냐하면 이후에 그것을 바꿀 기회가 없기 때문이다.(2) 바늘에 대해 말하자면 바늘 자체를const로 지정할 수도 있고 바늘이 가리키는 데이터를const로 지정하거나 양자를const로 동시에 지정할 수도 있다.(3) 하나의 함수 성명에서 const는 형삼을 수식하여 입력 매개 변수로서 함수 내부에서 그 값을 바꿀 수 없음을 나타낸다.(4) 클래스의 구성원 함수에 대해const 형식으로 지정하면 상수 함수로 클래스의 구성원 변수를 수정할 수 없음을 나타낸다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
mysql 복습 노트데이터 형식MySQL의 수치 데이터 유형은 크게 두 가지 종류로 나눌 수 있는데 하나는 정수이고 다른 하나는 부동점수 또는 소수이다. MySQL에서 지원되는 5가지 주요 정수 유형은 TINYINT, SMALLINT, MEDIU...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.