面試題---各種排序。插入,選擇,冒泡,shell,堆,快排

來源:互聯網
上載者:User

標籤:

#include<iostream>#include<string>#include<vector>using namespace std;void swap(int a[], int i, int j);void insert_sort(int a[], int n){for (int i = 1; i < n; i++){int temp = a[i], j = i;while (j&&temp < a[j - 1]){a[j] = a[j - 1];j--;}a[j] = temp;}}void shell_sort(int a[], int n){for (int inc = n / 2; inc; inc /= 2){for (int i = inc; i < n; i++){int temp = a[i],j=i;while (j>=inc&&temp < a[j - inc]){a[j] = a[j - inc];j -= inc;}a[j] = temp;}}}void select_sort(int a[], int n){for (int i = 0; i < n; i++){int index = i;int temp = a[i];for (int j = i+1; j < n; j++){if (a[j] < a[index]){index = j;}}a[i] = a[index];a[index] = temp;}}void bubble_sort(int a[], int n){/*for (int i = n; i > 0; i--){for (int j = 1; j < i; j++){if (a[j] < a[j - 1]){swap(a, j, j - 1);}}}*/for (int i = 0; i < n; i++){for (int j = n - 1; j>i; j--){if (a[j] < a[j - 1]){swap(a, j, j - 1);}}}}void merge(int a[], int l, int m, int r){int *temp = new int[r - l];int i = 0, j = l, k = m;while (j < m&&k < r){if (a[j] < a[k]){temp[i++] = a[j++];}else{temp[i++] = a[k++];}}while (j != m){temp[i++] = a[j++];}while (k != r){temp[i++] = a[k++];}for (int i = l; i < r; i++){a[i] = temp[i - l];}delete[] temp;temp = nullptr;}void merge_sort(int a[], int l, int r){if (l + 1 >= r){return;}int middle = (l + r) / 2;merge_sort(a, l, middle);merge_sort(a, middle, r);merge(a, l, middle, r);}void quick_sort(int a[], int l, int r){if (l + 1 >= r){return;}int pivot = a[l];int i = l, j = r;while (true){do{i++;} while (a[i] < pivot&&i<r);do{j--;} while (a[j] >= pivot&&j > l);if (i >= j)break;swap(a, i, j);}a[l] = a[j];a[j] = pivot;quick_sort(a, l, j);quick_sort(a, j + 1, r);}void shut_down(int a[], int hole,int n){while (hole < n){int firstIndex = hole * 2 + 1;if (firstIndex + 1 < n&&a[firstIndex] < a[firstIndex + 1]){firstIndex++;}if (firstIndex < n&&a[hole] < a[firstIndex]){swap(a, hole, firstIndex);}hole = firstIndex;}}void make_heap(int a[], int n){for (int i = (n-1) / 2; i>=0; i--){shut_down(a, i, n);}}void heap_sort(int a[], int n){make_heap(a, n);for (int i = n - 1; i; i--){swap(a, 0, i);make_heap(a, i);}}void swap(int a[], int i, int j){int temp = a[i];a[i] = a[j];a[j] = temp;}void print(int a[], int n){for (int i = 0; i < n; i++){cout << a[i] << " ";}cout << endl;}/*int main(){int* a = new int[10];for (int i = 0; i < 10; i++){a[i] = rand() % 10;}print(a, 10);//insert_sort(a, 10);//shell_sort(a, 10);//select_sort(a, 10);//bubble_sort(a, 10);//merge_sort(a,0, 10);//quick_sort(a, 0, 10);//heap_sort(a, 10);//print(a, 10);}*/

  

面試題---各種排序。插入,選擇,冒泡,shell,堆,快排

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.