快速排序(演算法導論版)
version1:左邊第乙個元素為主元
#include#include#includeusing namespace std;
int partition(int a, int left, int right)//
} swap(a[i], a[left]);
return i;
}void swap(int &x1, int &x2)
void quicksort(int a, int left, int right)
}int main()
version2:右邊最後乙個元素為主元
#include#include#includeusing namespace std;
int partition(int a,int left,int right)//
} swap(a[i + 1], a[right]); //這個版本的swap的是i+1 而不是左邊版本的i(因為右邊為主元的版本 i+1才是比主元大的「第乙個數字」,應該把它換到右邊)
return i + 1; //同上
}void swap(int &x1, int &x2)
void quicksort(int a, int left, int right)
}int main()
2.bis
#include//折半插入排序
#includeusing namespace std;
void bis(int a, const int left, const int right)//在lefr到i-1的地方 查詢i要插入的位置.
for (int k = i - 1; k >= low; k--)
a[low] = temp; }}
/*int main()
*/
3.氣泡排序#include//氣泡排序
#includeusing namespace std;
void bubble(int a, int n)
if (exchange == false)
return; }}
/*int main()
*/
4.直接插入
#include//插入排序
#includeusing namespace std;
void insertsort(int a, const int left, const int right) while (j >= left && temp < a[j]);
a[j + 1] = temp;
} }}void insertsort_1(int a, const int left, const int right) while (back >= left && temp < a[back]);
a[back + 1] = temp;
} }}/*int main()
*/
5.歸併排序#includeusing namespace std;
//將有二個有序數列a[first...mid]和a[mid...last]合併。
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];
}void mergesort(int a, int first, int last, int temp)
}/*bool mergesort(int a, int n)
*//*int main()
; int b[10];
mergesort(a, 0, 9, b);
for (int i = 0; i != 10; i++)
cout << b[i] << " ";
return 0;
}*/
6.希爾排序#include#includeusing namespace std;
void shellsort(int a,int left,int right)
while (j >= left &&temp < a[j]);
a[j + gap] = temp;
} } while (gap>1);
}/*int main()
*/
排序演算法專題
氣泡排序bubblesort 選擇排序selectionsort 插入排序insertsort 歸併排序mergesort 快速排序quicksort 堆排序heapsort 氣泡排序 相鄰元素兩兩比較,將通過比較得到的最大元素放在最後 選擇排序 總是選最小的元素放在當前有序序列的末尾,選n 1次 ...
專題七 排序演算法
1 基本思想 每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在待排序的數列的最前,直到全部待排序的資料元素排完。2 排序過程 示例 初 始 關鍵字 49 38 65 97 76 13 27 49 第一趟排序後 13 38 65 97 76 49 27 49 第二趟排序後 13 27 ...
排序部分專題
各種排序思路總結 氣泡排序 1 外層迴圈將排序好的除去 2 內層迴圈將沒排好的陣列進行前後比較大小,每經過乙個迴圈,最大的數都在最後面 穩定排序,時間複雜度o n2 選擇排序 先找到第乙個數後的最小值,並將其與之交換 內層迴圈為找到最小值 不穩定,o n2 插入排序 1 外層迴圈是將排好續的陣列保留...