馬上大四了,面試前複習下基本的排序演算法,然後寫出來整理下。
/**
* 氣泡排序
**@param array 待排序的陣列
*/public
static
void
bubblesort(int array) }}
}
/**
* 選擇排序
**@param arr 待排序的陣列
*/public
static
void
selectionsort(int arr)
temp = arr[min]; //將最小元素放到已排序序列的末尾
arr[min] = arr[i];
arr[i] = temp;
}}
/**
* 快速排序入口
**@param arr 待排序的陣列
*/public
static
void
qucksort(int arr)
/*** 快速排序步驟一(遞迴實現)
**@param arr 待排序的陣列
*@param low 陣列下標
*@param high 陣列下標
*/private
static
void
qucksortstep1(int arr, int low, int high)
}/**
* 快速排序步驟二(將比「樞軸」(pivot)這個數小的放到左邊,大的放到右邊)
**@param arr 待排序的陣列
*@param low 陣列下標
*@param high 陣列下標
*@return 返回「樞軸」(pivot)的下標
*/private
static
intqucksortstep2(int arr, int low, int high)
arr[low] = arr[high];
while (low < high && arr[low] <= pivot)
arr[high] = arr[low];
}arr[low] = pivot;
return low;
}
/**
* 直接插入排序
*@param arr 待排序的陣列
*/public
static
void
directinsertsort(int arr)
arr[j + 1] = temp;
}}
/**
* 將有二個有序數列a[first...mid]和a[mid...last]合併。
**@param a 待排序的陣列
*@param first 待排序陣列的前乙個索引
*@param mid 待排序陣列的中間的索引
*@param last 待排序陣列的後乙個索引
*@param temp 臨時陣列用來存放排序後的值
*/private
static
void
mergearray(int a, int first, int mid, int last, int temp)
while (i <= m)
temp[k++] = a[i++];
while (j <= n)
temp[k++] = a[j++];
for (i = 0; i < k; i++)
a[first + i] = temp[i];
printarray(a);
}/**
* 歸併排序的遞迴
**@param a 待排序的陣列
*@param first 待排序陣列的前乙個索引
*@param last 待排序陣列的後乙個索引
*@param temp 臨時陣列用來存放排序後的值
*/private
static
void
mergesort(int a, int first, int last, int temp)
}/**
* 歸併排序入口
**@param a 待排序的陣列
*@param n 待排序的陣列長度
*/public
static
void
mergesort(int a, int n)
/**
* 基數排序(從個位開始)
**@param array 待排序的陣列
*@param d 表示最大的數有多少位
*/public
static
void
basesort(int array, int d)
for (int i = 0; i < 10; i++)
order[i] = 0;
}n *= 10;
k = 0;
m++;
}}
各大排序演算法
後面慢慢完善 includeint h 101 用來存放堆的陣列 int n 用來儲存堆中元素的個數,也就是堆的大小 交換函式,用來交換堆中的兩個元素的值 void swap int x,int y 向下調整函式 傳入乙個需要向下調整的結點編號i,這裡傳入1,即從堆的頂點開始向下調整 void si...
各大排序演算法比較
一 各種演算法比較序號 排序類別 時間複雜度 空間複雜度穩定1 插入排序 o n2 1 2希爾排序 o n2 1 3氣泡排序 o n2 1 4選擇排序 o n2 1 5快速排序 o nlogn o logn 6 堆排序o nlogn 1 7歸併排序 o nlogn o n 1氣泡排序 bubble ...
各大排序演算法自己總結
1.歸併排序 把十個數進行從小到大排序 每一次都把陣列分成兩部分,然後進行排序,然後把兩部分排好序再合併到一起,一次進行下去直到只剩下乙個元素,結束。時間複雜度為o n logn 快速排序也是分治演算法的經典例子。下面 和注釋自己純手敲的.include includeusing namespace...