插入排序 选择排序 冒泡排序

/*
 *@list:待排序数组
 *@n:总排序元素个数
 */
void insertSort(element list[], int n)//插入排序
{
    int i=0;
    int j=0;
    element next;
    for(i=0; i<n; i++)
    {
        next=list[i];
        for(j=i-1;j>=0&&list[j]>next;j--)//j>=0且list[j]是和next比较
        {
            list[j+1]=list[j];//后一位等于前一位
        }
        list[j+1]=next;
    }
    return;
}

/*
 *@list:待排序数组
 *@n:总排序元素个数
 */
void selectSort(element list[], int n)//选择排序
{
    int i=0;
    int j=0;
    int k=0;
    element temp;
    for(i=0; i<n; i++)
    {
        temp=list[i];
        k=i;//不要忘记

        for(j=i+1; j<n; j++)
        {
            if(list[j]<temp)
            {
                temp=list[j];
                k=j;
            }
        }

        list[k]=list[i];
        list[i]=temp;
    }
    return;
}

/*
 *@list:待排序数组
 *@n:总排序元素个数
 */
void bubbleSort(element list[], int n)//冒泡排序
{
    int i=0;
    int j=0;
    element temp;
    bool exchange;//标记本趟是否有交换

    for(i=0; i<n; i++)
    {
        exchange=false;//本趟排序开始

        for(j=0; j<n-i-1; j++)//注意j的范围
        {
            if(list[j]>list[j+1])//j+1不能是后面排序好的元素,所以j<n-i-1
            {
                temp=list[j];
                list[j]=list[j+1];
                list[j+1]=temp;
                exchange=true;//本趟排序发生交换
            }
            if(!exchange)//本趟排序没有发生交换,说明前n-1个不用排序,提前终止算法
            {
                return;
            }
        }
    }
    return;
}
posted @ 2012-07-16 10:17  logzh  阅读(192)  评论(0编辑  收藏  举报