http://www.algolist.net/Algorithms/Sorting/Quicksort




public static int partition(int[] arr, int left, int right)

        {

            int i = left, j = right;

            int tmp;

            int pivot = arr[(left + right) / 2];



            while (i <= j)
            {

                while (arr[i] < pivot)

                    i++;

                while (arr[j] > pivot)

                    j--;

                if (i <= j)
                {

                    tmp = arr[i];

                    arr[i] = arr[j];

                    arr[j] = tmp;

                    i++;

                    j--;

                }

            };



            return i;

        }




https://www.programmingalgorithms.com/algorithm/radix-sort




public static void RadixSort(ref int[] data)
{
	int i, j;
	int[] temp = new int[data.Length];

	for (int shift = 31; shift > -1; --shift)
	{
		j = 0;

		for (i = 0; i < data.Length; ++i)
		{
			bool move = (data[i] << shift) >= 0;

			if (shift == 0 ? !move : move)
				data[i - j] = data[i];
			else
				temp[j++] = data[i];
		}

		Array.Copy(temp, 0, data, data.Length - j, j);
	}
}

https://www.youtube.com/watch?v=4s44rXRdmhQ&list=PL0NHOHZVAjfCioTcerGybx123MRMFBS5w