【IT面试题】排序算法

来源:互联网 发布:软件前景分析 编辑:程序博客网 时间:2024/04/30 02:01

出处:《算法导论》

KEY1:插入排序

//插入排序#include <iostream>using namespace std;int main(){    int i, j, key;    int A[6] = {8, 2, 4, 9, 3, 6};    for(j = 1; j <= 5; j++)    {key = A[j];i = j - 1;while(i >= 0 && A[i] > key){    A[i+1] = A[i];            i = i - 1;}A[i+1] = key;    }    for(int i = 0; i <= 5; i++)        cout<<A[i]<<' ';}

KEY2:快速排序

//快速排序//平均时间复杂度O(nlogn) #include <iostream>using namespace std;int partition(int A[], int p, int q){    int i, j, x;    x = A[p];    i = p;    for(j = i + 1; j <= q; j++)    {        if(A[j] <= x)        {            i = i + 1;            swap(A[j], A[i]);                }          }    swap(A[p], A[i]);    return i;    }void Quicksort(int A[], int p, int r){    if(p < r)    {        int q = partition(A, p, r);        Quicksort(A, p, q - 1);        Quicksort(A, q + 1, r);         }    }int main(){    int A[ ] = {6,10,13,5,8,3,2,11,4,12};    Quicksort(A, 0, 9);    for(int i = 0; i <= 9; i++)        cout<<A[i]<<' ';    return 0;      }


原创粉丝点击