数据结构中的常见排序总结(顺序表)

以下是对顺序表进行直接插入排序、冒泡排序、快速排序代码的实现总结

#include 
using namespace std;
#include
#define M 100
typedef struct
{
  int r[M+1];
  int length;
}SqList;
void InsertSort(SqList &L)//直接插入排序实现;
{
    int j;
    for(int i=2;i<=L.length;i++)
    {
        if(L.r[i]0)&&(flag==1))
    {
        flag=0;//flag置为0,若本趟未发生交换,则不会执行下一趟排序
        for(j=1;j<=m;j++)
        {
            if(L.r[j]>L.r[j+1])
            {
                flag=1;//flag置为1,表示本趟排序发生了交换;
                 t=L.r[j];
                L.r[j]=L.r[j+1];
                L.r[j+1]=t;
            }
        }
        --m;//此处注意:该语句是在for循环外面,while循环里面
    }
}
int Partition(SqList &L,int low,int high)
    {//对顺序表L中的子表r[low..high]进行一趟排序,返回枢轴位置
        int p;
       L.r[0]=L.r[low];//用子表的第一个记录做枢轴记录
       p=L.r[low];//枢轴记录的关键字保存在P中
       while(low=p) --high;
           L.r[low]=L.r[high];//将比枢轴记录小的记录移到低端
           while(low

代码的实现:

请输入您要排序的序列中的元素个数及各元素:
5
22 31 14 56 12
直接插入排序的结果为:12 14 22 31 56
冒泡排序的结果为:12 14 22 31 56
快速排序的结果为:12 14 22 31 56

你可能感兴趣的:(小白学习数据结构)