目錄
堆排序歸併排序:
氣泡排序 ——> 快速排序:
氣泡排序:
/** 構建最小堆 */
public static void makeminheap(int a, int n)
} // 從i節點開始調整,n為節點總數 從0開始計算 i節點的子節點為 2*i+1, 2*i+2
public static void minheapfixdown(int a, int i, int n)
if (a[i] <= a[j])
break;
// 較大節點下移
temp = a[i];
a[i] = a[j];
a[j] = temp;
i = j;
j = 2 * i + 1;
} }public static void minheap_sort(int a, int n)
}
* 歸併排序的核心是兩步:
* 1、把陣列分割成左右子樹,遞迴,直到不能在分割為止;
* 2、從最小子樹 依次往上 逐層合併
public static void main(string args) ;
int temp = new int[8];
print("【原始陣列】", arr);
merge_sort(arr, 0, arr.length-1, temp);
print("【歸併排序】", temp);
} /**
* 遞迴 將陣列分割成左右子樹
* @param array
* @param first
* @param last
* @param temp
*/public static void merge_sort(int array, int first, int last, int temp) }
/*** 合併 :將兩個序列a[first-middle],a[middle+1-end]合併
* @param array 原始陣列
* @param temp 臨時儲存排序成功的子陣列,然後將子陣列賦值給原始陣列對應的部分
*/public static void mergearray(int array, int first, int middle, int last, int temp) else
} while (begin <= point)
while (step <= end)
for (int ii = 0; ii < temp_index; ii++)
}
快速排序——冒泡(交換)排序的改進——挖坑填空
隨機取乙個數作為key,將比key大的數放在右邊,比key小的數放在左邊
分成左右子陣列 依次遞迴
public static void quicksort(int arr,int left,int right)
int key = arr[left]; //選擇第乙個數為key
int lindex = left; //記錄左移動的下標
int rindex = right; //記錄右移動的下標
while(lindex < rindex)
if(lindex < rindex)
while(lindex < rindex && arr[lindex] < key)
if(lindex < rindex)
}arr[lindex] = key;
quicksort(arr, left, lindex-1);//遞迴呼叫
quicksort(arr, lindex+1, right);//遞迴呼叫
}
/**
* 氣泡排序
* 思想:兩個數比較大小,較大的數下沉(往後),較小的數冒起來(往前)。
*/方法一:
public static int bubblesort(int arr)
}if(!flag)
} return arr;
}方法二:
// 複雜度 0.5*n(n+1)
// 二次函式,
public static int sort(int array)
}print(array);
} return array;
} public static void main(string args) ;
int a = bubblesort(asd);
for (int i = 0; i < a.length; i++)
}
排序演算法篇(氣泡排序)
氣泡排序 bubble sort 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序演算法的...
排序演算法篇(堆排序)
堆是一種特殊的資料結構,是一種完全二叉樹,分為大根堆 根節點的值大於孩子節點 和小根堆 根節點小於孩子節點 建堆和堆排序 如下 package cn.com.daydayup.test public class stacksort sort a 堆排需方法 public static void so...
演算法篇 選擇排序演算法
嘿嘿,不要怪我啦,別的都看不懂,就從最基本的開始講解!選擇排序演算法思想 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘的未排序的元素中繼續尋找最小 大 元素,然後放到已排序的末尾。直到所有元素均排序完畢。實現 對於乙個無序的序列我們可以通過n 1趟排序得到排序結果。...