memset ๋ˆ„๊ตฌ๋ƒ ๋„Œ

jjunhaa0211ยท2022๋…„ 12์›” 1์ผ
0

C/C++

๋ชฉ๋ก ๋ณด๊ธฐ
1/1
post-thumbnail

c์–ธ์–ด์—์„œ ๋˜๋Š” c++์—์„œ๋Š” memset์ด๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋Š”๋ฐ ๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ธฐ์ˆ˜ ์ •๋ ฌ ๋–„๋ฌธ์— ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค ํ•˜์ง€๋งŒ ์™œ ์ฝ”๋“œ๋ฅผ ์ด๋ ‡๊ฒŒ ์งœ๋Š” ์ง€ ๋ชฐ๋ผ์„œ ์˜ค๋Š˜์€ ๋‚˜๋„ ์•Œ๊ณ  ์—ฌ๋Ÿฌ๋ถ„๋„ ์•Œ์ž๋Š” ์˜๋ฏธ์—์„œ memset์„ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค

metset์€ ์ฒ˜์Œ์— ๋ฐ›๋Š” ๊ฐ’์ธ (void *__b) ์— ์ž์‹ ์ด ๋„ฃ์„ ๊ฐ’์„ ์ •๋ฆฌํ•ด์ค๋‹ˆ๋‹ค .

๊ทธ๋ฆฌ๊ณ  (int __c) ์— ์ž์‹ ์ด ๋ชจ๋“  ์ˆ˜๋ฅผ ์ฑ„์šฐ๊ณ  ์‹ถ์€ ๊ฐ’์„ ์ ์–ด์ค๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ (size_t __len) ์— ์ž์‹ ์ด ์•ž์—์„œ (void *__b) ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ์ •์˜ํ•ด์ค๋‹ˆ๋‹ค.

์ด๋–„ count = ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค

์„ค๋ช…์„ ์œ„ํ•ด์„œ count์˜ ๊ฐ’์„ [1,2,3,4] ๋ผ๊ณ  ์ •์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๊ทธ๋Ÿฌ๋ฉด ์ €๊ธฐ ์žˆ๋Š” ์ € ์ฝ”๋“œ๋Š” count์˜ ๋ชจ๋“  index๋ฅผ 0์œผ๋กœ ๋ฐ”๊พผ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค

๊ทธ๋Ÿฌ๋ฉด count์˜ ๊ฐ’์ด 1์ด๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

์ƒ๊ฐ ํ•˜์ง€ ๋ชปํ–ˆ๊ฒ ์ง€๋งŒ 1์€ ์ˆซ์ง€ 1์ด ์•„๋‹ˆ๋‹ค ์—ฌ๊ธฐ์— ๋“ค์–ด ๊ฐˆ๋•Œ sizeof์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋•Œ ์˜ ๊ฐ’์ด 4๋ฐ”์ดํŠธ๋กœ ๋Š์–ด์ง„๋‹ค. ๊ทธ๋Ÿผ 4๋ฐ”์ดํŠธ๋Š” ๋ญ๊ฐ€ ๋ ๊นŒ? 0 0 0 0 2์ง„์ˆ˜๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.

๊ทธ๋‹ˆ๊นŒ 0 0 0 1๋กœ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ์˜ ๊ฐ’์ด 1์€ ๋งž์ง€๋งŒ 2์˜ ๊ฐ’์ด ๋“ค์–ด๊ฐ€๋ฉด 0 0 1 0 ์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค ์ด์ œ ์ดํ•ด๊ฐ€ ๋๋‚˜์š”?

๊ทธ๋Ÿฌ๋ฉด count์˜ ๊ฐ’์ด double์ด๋ฉด ์–ด๋–ป๊ฒŒ๋ ๊นŒ์š”? 0 0 0 0 0 0 0 0์ด ๋˜๊ฒ ์ฃ ? ๊ทธ๋Ÿฌ๋ฉด double ๊ฐ’์œผ๋กœ ์›ํ•˜๋Š” ๊ฐ’์„ ๋ฐ›์•„์„œ ๋ฉ๋‹ˆ๋‹ค ^^

ํ˜น์‹œ ์˜คํ•ด ํ•  ๋ถ„๋“ค์„ ์œ„ํ•ด์„œ count ๋ฐฐ์—ด์˜ ๊ฐ’์ด 5๊ฐœ์˜ ๊ฐ’์ด ๋“ค์–ด์ด์œผ๋ฉด Int๋ผ๋Š” ์ „์ œ๋กœ 20๋ฐ”์ดํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ ์ฝ”๋“œ

๋ณธ์ฝ”๋“œ๋Š” ์„ ํƒ ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ, ๋ฒ„๋ธ”์ •๋ ฌ, ๊ธฐ์ˆ˜ ์ •๋ ฌ

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include <iostream>
#include <string>
using namespace::std;

int arr[] = { 139, 42, 146, 36, 223, 249, 222, 27 };

void BubbleSort() {
    int temp = 0;
    for(int i = 8 - 1; i > 0; i--) {
        for(int j = 0; j < i; j++) {
            if(arr[j] > arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

void InsertionSort() {
    int i,j,key;
    for(i = 1; i < 8; i++) {
        key = arr[i];
        for(j = i - 1; arr[j] > key && j >= 0; j--) {
            arr[j + 1] = arr[j];
        }
        arr[j+1] = key;
    }
}

void SelectionSort() {
    int temp = 0;
    int min = 0;
    for(int i = 0; i < 8; i++)
    {
        min = i;
        for(int j = i + 1; j < 8; j++)
        {
            if(arr[j] < arr[min]){
                min = j;
            }
        }
        if(i != min)
        {
            temp = arr[min];
            arr[min] = arr[i];
            arr[i] = temp;
        }
        cout << arr[i] << " ";
    }
}

void RedexSort(int a[], int size, int base) {
    int max = a[0];
    int j = 0;
    int i = 0;
    for(i = 1; i < size; i++) {
        if(a[i] > max) {
            max = a[i];
        }
    }
    
    int x;
    for(i = 1; i < size; i++){
        if(a[i] > max){
            max = a[i];
        }
    }
    
    for(x = 1; x <= max; x = x * (base)) {
        int op[size], count[base];
        
        memset(count, 0, sizeof(count));
        
        for(i = 0; i < size; i++) {
            count[(a[i] / x) % base]++;
        }
        
        for(i = 1; i < base; i++) {
            count[i] += count[i-1];
        }
        
        for(i = size-1; i > -1; i--) {
            j = (a[i] / x) % base;
            op[count[j] -1] = a[i];
            count[j] = count[j] - 1;
        }
        
        for(i = 0; i < size; i++) a[i] = op[i];
    }
}

int main() {
    int n = 8;
    BubbleSort();
    
    cout << " BubbleSort    : " << " ";
    
    for(int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
        if(i == n - 1) {
            cout << "\n";
        }
    }
    
    InsertionSort();

    cout << " InsertionSort : " << " ";
    for(int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
        if(i == n - 1) {
            cout << "\n";
        }
    }
    
    cout << " SelectionSort : " << " ";
    
    SelectionSort();
    
    cout << endl;
    
    int size = sizeof(arr)/sizeof(int);
    
    cout << " RedexSort     : " << " ";
    
    RedexSort(arr, size, 8);
    
    for(int i = 0; i < n; i++)
    {
        cout << arr[i] << " ";
        if(i == n - 1) {
            cout << "\n";
        }
    }

  return 0;
}
profile
๋งˆ์Œ๋งŒ์€ ๋ชจ๋“ ๊ฑธ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž ๐Ÿฅน

0๊ฐœ์˜ ๋Œ“๊ธ€