"correlation does not imply causation"

perfect negative correlation 😂

Posted in Fun | Tagged , , | Leave a comment

Tab Overload #2

Posted in Links | Tagged , , , , , , | Leave a comment

15 Sorting Algorithms

Visualization and “audibilization” of 15 Sorting Algorithms in 6 Minutes.

Source: http://panthema.net/2013/sound-of-sorting/

Posted in Algorithm Analysis | Tagged , , , | Leave a comment

Tab Overload #1

Posted in General Concepts, Links | Tagged | Leave a comment

Data Structures and Algorithm #1 Merge Sort

Bugün yaptığım şey, seçtiğim bir sıralama algoritmasını incelemek oldu. Merge Sort’u baştan sona incelemek birçok şeyi hatırlamak için iyi bir karardı sanırım. Java için temel syntaxlar, main memory ve recursion başlıklarının üstünden geçtim. Head Recursion için 2 ayrı örnek üzerinde durdum, ancak çok temel olduklarından burada yalnızca bir tanesine görsel olarak yer vereceğim. Bunlar dışında algoritmanın teorisini ve implementasyonunu incelerken kalem kağıtla neleri not aldığım da burada. Time complexity analysis notlarını daha sonra Latex ile aktaracağım.

İncelediğim merge sort algoritması:

public class Main {
    public static void main(String[] args) {
        int[] intArray = { 20, 35, -15, 7, 55, 1, -22 };
        mergeSort(intArray, 0, intArray.length);
        for (int i = 0; i < intArray.length; i++) {
            System.out.println(intArray[i]);
        }
    }
    // { 20, 35, -15, 7, 55, 1, -22 }
    public static void mergeSort(int[] input, int start, int end) {
        if (end - start < 2) {
            return;
        }
        int mid = (start + end) / 2;
        mergeSort(input, start, mid);
        mergeSort(input, mid, end);
        merge(input, start, mid, end);
    }
    // { 20, 35, -15, 7, 55, 1, -22 }
    public static void merge(int[] input, int start, int mid, int end) {
        if (input[mid - 1] <= input[mid]) {
            return;
        }
        int i = start;
        int j = mid;
        int tempIndex = 0;
        int[] temp = new int[end - start];
        while (i < mid && j < end) {
            temp[tempIndex++] = input[i] <= input[j] ? input[i++] : input[j++];
        }
        System.arraycopy(input, i, input, start + tempIndex, mid - i);
        System.arraycopy(temp, 0, input, start, tempIndex);
    }
}

Time complexity analysis:

  • O(n\cdot\log_{2}n)
  • Not in-place
  • Stable

Posted in Algorithm Analysis | Tagged , , , | Leave a comment

Hello world!

Ormanda yolunu kaybeden, bir noktada durur, o nokta mihenk noktasıdır ve o mihenk noktası etrafında yürüyerek gittikçe büyüyen ve iç içe geçen daireler çizer, dairelerden biri mutlaka kaybedilen yolla kesişecektir. Şimdi yaptığım belki de bu. Zaman kaybedeceğim ama bana ait olanı bulacağım, kesin olarak bildiğim tek şey zorlu sürecimin beklediği. 8 ay boyunca küçük bir firmada Teknik Servis Mühendisliği yaptım ve bu işten kısaca nefret ettim, iş pek de bana göre değilmiş. Yolumu kaybettiğimi anlamam 8 ay sonraya denk geldi. İş bulmanın zaten başlı başına bir zorluk olması belki beni orada tuttu, halbuki orada olmam için aslında pek de geçerli bir neden yoktu. İnsanın yaptığı işten nefret etmesi gerçekten berbat şey, her sabah ayakları sürüye sürüye gitmek, ama yine de ve her şeye rağmen tüm zamanın ve enerjinle işi hakkını vererek yapmak ve içten içe duyulan memnuniyetsizliği etrafa sezdirmemek epey yıpratıcı bir süreç. Eğer bütün bunlar insanın kendisini daha iyi tanımasını sağlıyorsa, eğer gerçekten böyleyse bunları yaşamaya değer. Peki nedir anladığım, yani tam olarak nasıl bir işte çalışmalı, nasıl olmalı ki insan kendi iç dünyası ve yapısıyla çelişmesin; benliği zorlamadan, kişi için -mış gibi yapmadan verimli, istekli, sürekli olan yol nedir? Şimdi kendi adıma net şekilde görmekteyim ki eğer yapılan iş üzerinde detaylı ve uzun süreli düşünülüyorsa, bu iş analitik düşünce pratiği ve yaratıcılık gerektiriyorsa, insan faktörü olabildiğince azsa, evet orası benim yerim. Bu herhangi bir tasarım süreci de olabilirdi ama görece kısa süreli ve epey severek içinde olduğum bir yazılım eğitimi geçmişim ve tecrübem var. Yol orası. Gelişim sürecinde ne yapıp ne yapmamam gerektiğini biliyorum. Bu mecra kendimi disipline etmek, eksikleri görmek gibi son derece kişisel amaçlar adına atılmış bir adımdan başka şey değil. Her hayat kendine özgü, kural çıkarmak, başkalarına bakıp umutlanmak ya da umutsuzluğa düşmek yanlış. Artık iç içe ve giderek büyüyen daireler çizmeye başlayabilirim.

Posted in Gulliver | Leave a comment