Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189298
  • 博文数量: 54
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 630
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-02 18:41
文章分类

全部博文(54)

文章存档

2011年(1)

2009年(30)

2008年(23)

我的朋友

分类: C/C++

2008-11-19 16:27:13

全部于VC6.0下编译通过。

1、插入排序: 将数组第一个元素看做有序,然后每次将有序序列的后一个无序元素(即无序序列的第一个元素)插入到前面有序序列的正确位置,使之保持有序,直至无序序列为空。

#include<iostream>
using namespace std;
template <class T>
void InsertSort(T list[],int n)
//插入排序

{
    if(n<2) return;
    for(int i=1; i<n; i++)
        for(int j=i-1; j>=0; j--)
            if(list[j] > list[j+1])
            {
                list[j]=list[j]^list[j+1];
                list[j+1]=list[j]^list[j+1];
                list[j]=list[j]^list[j+1];
            }
}

void main()
{
    int list[10]={10,5,6,9,8,1,7,3,2,4};
    InsertSort(list,10);
    cout<<"排序后得到:";
    for(int i=0; i<10; i++)
        cout<<list[i]<<' ';
    cout<<endl;
}

 

2、选择排序: 开始将整个序列看做无序,第1趟找出n中最小的元素与第1个元素(list[0])交换,此时无序序列元素剩下n-1个,第2趟找出无需序列n-1中最小元素与第2个元素(list[1])交换,…,以此类推直至n-1趟(与(list[n-2])的交换,剩下最后一个元素list[n-1]必有序)。

#include<iostream>
using namespace std;
template <class T>
void SelectionSort(T list[], int n)
//选择排序

{
    if(n<2) return;
    for(int i=0,j,least; i<n-1; i++)
//当前面都有序,最后一个即下标为n的元素为有序。

    {
        for(j=i+1,least=i; j<n; j++)
            if(list[j] < list[least])
                least=j;
        if(least > i)
        {
            list[i]=list[i]^list[least];
            list[least]=list[i]^list[least];
            list[i]=list[i]^list[least];
        }
    }
}

void main()
{
    int list[10]={10,5,6,9,8,1,7,3,2,4};
    SelectionSort(list,10);
    cout<<"排序后得到:";
    for(int i=0; i<10; i++)
        cout<<list[i]<<' ';
    cout<<endl;
}

 

3、冒泡排序: 一次次遍历(一共遍历n-1次),每次找出最小的往数组前面移动。

#include<iostream>
using namespace std;
template <class T>
void BubbleSort(T list[], int n)
//冒泡排序

{
    if(n<2) return;
    for(int i=0; i<n-1; i++)
        for(int j=n-1; j>i; j--)
            if(list[j] < list[j-1])
            {
                list[j]=list[j]^list[j-1];
                list[j-1]=list[j]^list[j-1];
                list[j]=list[j]^list[j-1];
            }
}

void main()
{
    int list[10]={10,5,6,9,8,1,7,3,2,4};
    BubbleSort(list,10);
    cout<<"排序后得到:";
    for(int i=0; i<10; i++)
        cout<<list[i]<<' ';
    cout<<endl;
}

阅读(505) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~