1. 程式人生 > >排序小劄記

排序小劄記

pre emp urn cnblogs 元素 div fin iostream brush

直接排序:

#include <iostream>
using namespace std;

#define Maxsize 1024

void InsertSort(int arr[], int n)
{
    int temp, j;
    for(int i=1; i<n; ++i)
    {
        temp=arr[i];
        j=i-1;//由於有序序列與無序序列是相鄰的,i是無序序列的最左邊的元素,i-1則是有序序列中最右邊的元素。
        while((j>=0) && (temp<arr[j]))
        {
            arr[j+1]=arr[j];
            --j;
        }
        arr[j+1]=temp;//精妙之處
    }
}

int main()
{
    int n;
    int numbers[Maxsize];
    while(cin >> n)
    {
        for(int i=0; i<n; ++i)
            cin >> numbers[i];
        InsertSort(numbers, n);
        for(int i=0; i<n; ++i)
            cout << numbers[i] << ‘ ‘;
        cout << endl;
    }
    return 0;
}

選擇排序:

#include <iostream>
using namespace std;

#define Maxsize 1024

void SelectSort(int arr[], int n)
{
    int k;
    int temp;
    for(int i=0; i<n; ++i)
    {
        k=i;
        for(int j=i+1; j<n; ++j)
            if(arr[k]>arr[j])
                k=j;
        temp=arr[i];
        arr[i]=arr[k];
        arr[k]=temp;
    }
}

int main()
{
    int n;
    int numbers[Maxsize];
    while(cin >> n)
    {
        for(int i=0; i<n; ++i)
            cin >> numbers[i];
        SelectSort(numbers, n);
        for(int i=0; i<n; ++i)
            cout << numbers[i] << ‘ ‘;
        cout << endl;
    }
    return 0;
}

  

冒泡排序:

#include <iostream>
using namespace std;

#define Maxsize 1024

void BubleSort(int arr[], int n)
{
    int flag, temp;
    for(int i=n-1; i>=1; --i)
    {
        flag=0;
        for(int j=1; j<=i; ++j)
            if(arr[j-1] > arr[j])
            {
                temp=arr[j];
                arr[j]=arr[j-1];
                arr[j-1]=temp;

                flag=1;
            }
        if(flag==0)
            return;//經典之處
    }
}

int main()
{
    int n;
    int numbers[Maxsize];
    while(cin >> n)
    {
        for(int i=0; i<n; ++i)
            cin >> numbers[i];
        BubleSort(numbers, n);
        for(int i=0; i<n; ++i)
            cout << numbers[i] << ‘ ‘;
        cout << endl;
    }
    return 0;
}

  

排序小劄記