--heap sort . O(n*logn). auxiliary space O(1). Unstable sorting.
class ArraySort { static void Main(string[] args) { //give up 0 index. get/set from 1 so that getting right index when do j=2*i. int[] a = new int[11] {0,5,77,1,61,11,59,15,48,47,25 }; ArraySort arrs = new ArraySort(); arrs.HeapSort(a,a.Length-1); for (int i = 1; i < a.Length; i++) { Console.Write(a[i]); Console.Write(","); } Console.Read(); } void HeapSort(int[] K, int n) { int i, temp; for (i = n/2; i >=1; i--) { Adjust(K, i, n); } for (i = n-1; i >=1; i--) { temp = K[i + 1]; K[i + 1] = K[1]; K[1] = temp; Adjust(K, 1, i); } } void Adjust(int[] K, int i, int n) { int j = 0; int temp = K[i]; j = 2 * i; while (j<=n) { //get max child. if (j<n&&K[j]<K[j+1]) { j++; } if (temp >=K[j]) { break; } K[j / 2] = K[j]; j = 2 * j; } K[j / 2] = temp; } }