다시 가변배열 만들고
Sort함수 구현 함
#include <iostream>
#include "Array.h"
void InitArr(TARR* arrAdd)
{
arrAdd->arrAddr = (int*)malloc(sizeof(int) * 2);
arrAdd->arrCount = 0;
arrAdd->arrMaxCount = (sizeof(int) * 2) / sizeof(int);
}
void PushDataInArr(TARR* arrAdd, int inputData)
{
if (arrAdd->arrCount >= arrAdd->arrMaxCount)
{
RelocateArr(arrAdd);
}
arrAdd->arrAddr[arrAdd->arrCount++] = inputData;
}
void RelocateArr(TARR* arrAdd)
{
// 새로운 malloc 힙 메모리 할당
int* newArrAdd = (int*)malloc(sizeof(int) * arrAdd->arrMaxCount * 2);
// 새로운 주소에 데이터 이전
for (int i = 0; i < arrAdd->arrCount; ++i)
{
newArrAdd[i] = arrAdd->arrAddr[i];
}
// 새로운 주소로 이전
arrAdd->arrAddr = newArrAdd;
// maxCount 2배 증가
arrAdd->arrMaxCount *= 2;
}
void FreeArr(TARR* arrAdd)
{
free(arrAdd->arrAddr);
arrAdd->arrCount = 0;
arrAdd->arrMaxCount = 0;
}
// 오름차순으로 정렬
void SortArr(TARR* arrAdd)
{
int temp;
for (int i = 0; i < arrAdd->arrCount -1; ++i)
{
for (int j = 0; j < arrAdd->arrCount - 1; ++j)
{
temp = 0;
if (arrAdd->arrAddr[j] > arrAdd->arrAddr[j + 1])
{
temp = arrAdd->arrAddr[j];
arrAdd->arrAddr[j] = arrAdd->arrAddr[j + 1];
arrAdd->arrAddr[j + 1] = temp;
}
}
}
}
잘 나온다.
제일간단한 방법 : 무작위로 설정되어있는 "난수" 페이지를 참조하는 방식
rand()보완
난수에 여러 페이지가 있는데 "시드"값을 통해서
페이지를 변경 시켜준다.
그런데 시드값을 똑같이 주면 동일 페이지에 동일한 랜덤 값 나옴. 그래서
srand인자에다가 srand(time(nullptr)); 이렇게 가능.
내가 원하는 수가 만약 0~100 사이의 숫자라고 할 경우
아무리 큰 수라도 100으로 나누었을 경우 "나머지"가 0~99 무조건 고정 아니가???
5323이든 123이든 50으로 나눈 다음에 +50을 전부다 해주면 50~100사이의 숫자 나옴
123 50으로 나누면 나머지 23에다가 +50 > 73나온다.
수가 10 9 8 7 6 5 4 3 2 1 이렇게 있을 경우
오름차순으로 버블 정렬할 경우에 최악임.
데이터 갯수만큼 비교를 계속 해줌.
체크 해주어야 함.
나는 이중 for 문 사용했는데
그냥 while로 감싸서 boolean으로 체크를 해주었다.