總結了很久的排序演算法,自己測試了很多次,一直寫在筆記本上,還是怕弄丟了,還是貼到部落格上面來吧
//氣泡排序:
/**
* 交換排序--氣泡排序
* * @param arr
*/public static void bubblesort(long arr)
}if (exchange == 0)
} }
插入排序:
/**
* 直接插入排序
* * @param arr
*/public static void insertsort(long arr)
arr[j] = temp;
} }
希爾排序:
/**
* 希爾排序
* @param arr
*/public static void shellsort(long arr)
arr[j] = temp;}}
} }
快速排序:
// 劃分陣列
public static int partition(long arr, int left, int right) else
} // long temp = arr[leftptr];
// arr[leftptr]=arr[right];
// arr[right] = temp;
swap(arr, leftptr, right);
return leftptr;
} private static void swap(long arr, int i, int j)
// 快速排序
public static void quicksort(long arr, int left, int right)
}
堆排序:
public static void heapsort(int array)
} private static void initheap(int array)
} private static void adjustheap(int array, int n, int size)
if (array[child] > temp) else
} array[n] = temp;
}
//歸併排序
public static int mergesort(int array, int left, int right) ;
} int mid = (right + left) / 2;
int l = mergesort(array, left, mid);
int r = mergesort(array, mid + 1, right);
return merge(l, r);
} // 將兩個陣列合併成乙個
public static int merge(int l, int r)
while (lp < l.length)
while (rp < r.length)
return result;
}
//選擇排序
// 每次從中選出最小的元素,只進行一次交換
// 相比冒泡,大大減少了元素的交換次數
public static void selectsort(int array)
}int temp = array[min];
array[min] = array[i];
array[i] = temp;
} }
排序演算法個人總結
最近在看演算法,自然而然地就看到了排序。下面記錄一下自己的學習過程。一 歸併排序 首先我說說我理解的歸併演算法的核心 歸即將陣列中分為小部分的集合,其中也即數成為區域性有序的集合。然後再將這些有序陣列合併起來。歸 一般以中點劃分,不斷地遞迴,以使陣列有序,其實歸和並是互動的。如8個數字,歸為4,4。...
面試排序演算法總結
從第二個元素開始,每次選擇乙個元素插入到之前已經排好序的部分。選擇插入位置的時候從後往前,將帶插入元素取出,依次後移大於帶插入元素的數。演算法複雜度 最好是正序有序,需要n次比較。最差逆序有序,複雜度o n2 平均複雜度o n2 插入排序是穩定的 void insertsort int a,int ...
面試 排序演算法總結
空間複雜度 快速排序是一種原地排序,只需要乙個很小的棧作為輔助空間,空間複雜度為o log2n 所以適合在資料集比較大的時候使用。時間複雜度 時間複雜度比較複雜,最好的情況是o n 最差的情況是o n2 所以平時說的o nlogn 為其平均時間複雜度。具體操作過程 隨便取乙個值 6 將其為基準進行排...