2019년 2월 20일 수요일

Book] ELON MUSK


 JUST GET IT DONE 

HE WORKED FOR THE WORLD AND MULTIPLANETARY FUTURE

 NO WORK LIFE BALANCE 

MAYBE HE IS BETTER THAN IRON MAN 



2017년 12월 6일 수요일

Sorting algorithms




Basic sorting algorithms in cpp

//insertion sort
void insertionSort(int list[], const int listSize)
{
    int i, j, key;
    for (i = 1; i < listSize; i++)
    {
        key = list[i];
        for (j = i-1; j >= 0 && list[j] > key; j--)
            list[j + 1= list[j];
            list[j+1= key;
    }
}
//selection sort
void selectionSort(int list[], const int listSize)
{
    int i, j, least, tmp;
    for (i = 0; i < listSize-1; i++)
    {
        least = i;
        for (j = i + 1; j < listSize; j++)
            if (least > list[j]) least = j;
                SWAP(list[least], list[i], tmp);
    }
}
//bubble sort
void bubblleSort(int list[], const int listSize)
{
    int i,j, tmp;
    for(j = listSize-1; j>0; j--)
        for (i = 0; i < j; i++)
            if (list[i] > list[i + 1])
                SWAP(list[i], list[i + 1], tmp);
}
// shell sort 
void incInsertionSort(int list[], const int first, const int last, const int gap)
{    
    int i, j, key;
    for (i = first + gap; i <= last; i += gap)
    {
        key = list[i];
        for (j = i - gap; j >= first && list[j]>key; j -= gap)  // like insertionSort 
            list[j + gap] = list[j];
        list[j + gap] = key;
    }
}
void shellSort(int list[], const int n)
{
    int i, gap;
    for (gap = n / 2; gap>0; gap /= 2)
    {
        if ((gap % 2== 0) gap++;
        for (i = 0; i<gap; i++)
            incInsertionSort(list, i, n - 1, gap);
    }
}
// quick sort
int partition(int list[], const int left, const int right)
{
    int pivot, tmp;
    int low, high;
    low = left-1;
    high = right;
    pivot = list[right];
    do
    {
        do
            low++;
        while (low <= right && list[low] < pivot);
        do
            high--;
        while (high >= left && list[high]>pivot);
        if (low < high)
            SWAP(list[low], list[high], tmp);
    } while (low < high);
    SWAP(list[right], list[low], tmp);
    return low;
}
void quickSort(int list[], const int left, const int right)
{
    int q;
    if (left < right)
    {
        q = partition(list, left, right);
        quickSort(list, left, q - 1);
        quickSort(list, q + 1, right);
    }
}
// merge sort 
int sorted[MAX_SIZE];  ////
static void merge(int list[], const int left, const int mid, const int right)
{
    int i, j, k, l;
    i = left; j = mid + 1; k = left;
    
    while (i <= mid && j <= right)
    {
        if (list[i] <= list[j]) sorted[k++= list[i++];
        else sorted[k++= list[j++];
    }
    if (i>mid) 
        for (l = j; l <= right; l++)
            sorted[k++= list[l];
    else 
        for (l = i; l <= mid; l++)
            sorted[k++= list[l];
    for (l = left; l <= right; l++)
        list[l] = sorted[l];
}
void mergeSort(int list[], const int left, const int right)
{
    int mid;
    if (left < right)
    {
        mid = (left + right) / 2
        mergeSort(list, left, mid); 
        mergeSort(list, mid + 1, right);
        merge(list, left, mid, right); // merge finally
    }
}
cs