0707排序算法

来源:互联网 发布:linux which命令 编辑:程序博客网 时间:2024/06/11 21:17

0707排序算法

#include <iostream>using namespace std;//冒泡排序:将序列划分为无序和有序区,不断通过交换较大元素至无序区尾完成排序void maopao(int *array,int N){    for (int i = 0; i < N-1 ; ++i) {        for (int j = 0 ; j < N-1-i; ++j) {            if (array[j] > array[j+1]) {                array[j] += array[j+1];                array[j+1] = array[j]-array[j+1];                array[j]-=array[j+1];            }        }    }    for (int i = 0; i < N; ++i) {        cout<<array[i]<<" ";    }}//选择排序:将序列划分为无序和有序区,寻找无序区中的最小值和无序区的首元素交换,有序区扩大一个,循环最终完成全部排序。 void select(int *array,int N){    for (int i = 0; i < N-1; ++i) {        int index = i;        for (int j = i + 1 ; j < N; ++j) {            if (array[index] > array[j]) {                index = j;            }        }        if (index != i) {            array[i] += array[index];            array[index] = array[i]-array[index];            array[i]-=array[index];        }    }    for (int i = 0; i < N; ++i) {        cout<<"array["<<i<<"] = "<<array[i]<<endl;    }}//插入排序:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中区,最终将所有无序区元素都移动到有序区完成排序。void insert(int *a,int n){    int    i, j;    int    temp;//存放待插入的数    for (i = 1; i < n; i++)    {        j = i;        if (a[j] < a[j-1])        {            temp = a[i];            while (j > 0 && temp < a[j-1])            {                a[j] = a[j-1];                j--;            }            a[j] = temp;        }    }    for (i = 0; i < n; i++)    {        printf("%d\n", a[i]);    }}void swap(int *a, int *b){    int    temp;    temp = *a;    *a = *b;    *b = temp;}//快速排序:不断寻找一个序列的中点,然后对中点左右的序列递归的进行排序,直到全部序列排序完成。void quick(int* array,int first,int last){    if (first>=last) {        return;    }    int low = first;    int high = last;    int key = array[low];    while (low < high) {        while (low < high&&array[high]>=key)            --high;        array[low] = array[high];        while (low < high&&array[low]<=key)            ++low;        array[high] = array[low];        }    array[low] = key;    quick(array, first, low-1);    quick(array, low+1, last);}int main(int argc, const char * argv[]) {    const int N = 9;    int array[N] = {15,46,81,-1,34,12,85,38,28};//    maopao(array,N);//    cout<<endl;//    select(array,  N);//    insert(array,N);    quick(array, 0, 9);    for (int i = 0; i < N; ++i) {        cout<<"array["<<i<<"] = "<<array[i]<<endl;    }    return 0;}
0 0
原创粉丝点击