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;
}