首页 > 其他分享 >2008秋-计算机软件基础-快速排序

2008秋-计算机软件基础-快速排序

时间:2023-11-08 10:36:22浏览次数:36  
标签:计算机软件 SeqListNode int high low pivot 2008 排序

快速排序c语言源程序之一
// 快速排序
// 使用递归调用来实现快速排序
// Author: eman lee

/*Quick Sort */

#include <stdio.h>

void quick_sort(int data[], int low, int high)

{

   int i, j, pivot;

   if (low < high)

   {

              pivot=data[low];

              i=low; 

              j=high;

              

              while(i<j)

              {

                     while (i<j && data[j]>=pivot)

                            j--;

                     if(i<j)

                            data[i++]=data[j];   //将比枢轴记录小的记录移到低端
                     

                     while (i<j && data[i]<=pivot)

                            i++;

                     if(i<j) 

                            data[j--]=data[i];       //将比枢轴记录大的记录移到高端
              }

              

              data[i]=pivot;         //枢轴记录移到最终位置
              

              quick_sort(data,low,i-1);

              quick_sort(data,i+1,high);

    }

}

 
void main()

{

       int i;

       int data[9] = {54,38,96,23,15,72,60,45,83};

        for(i=0;i<9;i++)

       {

         printf(" %d ",data[i]);

       }

        printf("\n");

       quick_sort(data, 0, 8);

       for(i=0;i<9;i++)

       {

         printf(" %d ",data[i]);

       }

}
快速排序c语言源程序之二
// 快速排序
// 使用递归调用来实现快速排序
// 10/21/2007
// Author: eman lee

/*Quick Sort */

#include <stdio.h>

struct node

{

  int key;

  int other;

};


typedef struct node SeqListNode;

//划分算法
int Partition(SeqListNode R[],int i,int j)

{

 SeqListNode pivot=R[i];

 while(i<j)

   {

     while(i<j&&R[j].key>=pivot.key)

     j--;

     if(i<j)

       R[i++]=R[j];

     while(i<j&&R[i].key<=pivot.key)

       i++;

     if(i<j)

       R[j--]=R[i];

    } //endwhile
 R[i]=pivot;

 return i;

} 

//快速排序算法
void QuickSort(SeqListNode R[],int low,int high)

{

  int pivotpos;

  if(low<high)

    {

     pivotpos=Partition(R,low,high);

     QuickSort(R,low,pivotpos-1);

     QuickSort(R,pivotpos+1,high);

    }

}


 
void main()

{

       int i;

       SeqListNode data[9] = {{54,11},{38,22},{96,33},{23,44},{15,55},{72,66},{60,77},{45,88},{83,99}};

        for(i=0;i<9;i++)

       {

         printf(" %d ",data[i].key);

       }

        printf("\n");

       QuickSort(data,0,8);

       for(i=0;i<9;i++)

       {

         printf(" %d ",data[i].key);

       }

}

标签:计算机软件,SeqListNode,int,high,low,pivot,2008,排序
From: https://blog.51cto.com/emanlee/8245775

相关文章

  • 2008秋-计算机软件基础-第四章习题参考答案 P131 ,习题6之二
    P131,第6题之二参考答案(1)      快速排序(第一趟)初始状态Pivot=5353871261706827652135J向左扫描ij第一次交换后358712617068276521ijI向右扫描,第二次交换后351261706827652187ijJ向左扫描,第三次交换后352112617068276587ijI向右扫描,第四次交换352112706827656187ijJ向左扫描35......
  • 2008秋-计算机软件基础-直接插入排序
    //==============================================//直接插入排序(StraightSelectionSort)//Author:emanlee//直接插入排序c语言源程序//==============================================#defineN5#include<stdio.h>//显示元素voidDisplay(inta[],intelem......
  • 2008秋-计算机软件基础-简单选择排序
    //===========================================//简单选择排序//Author:EmanLee//===========================================#include<stdio.h>#defineN10voidDisplay(int*a,intn){inti;for(i=0;i<n;i++){printf(&qu......
  • 2008毕业设计-毕业设计需要了解的信息
     学号:姓名:系别:专业:班级:联系电话:常用邮箱:备用联系方式家庭电话:宿舍电话:备用邮箱: 选择的题目:在就业单位做毕业设计,还是在学校做毕业设计: (在其后填写是或否):是否有PC:是否已过四级:是否有需要补考课程:是否已签订工作: 工作地点: 是否学习过(在其后填写是或否):CC++JavaC#2003C#2005VB......
  • 2008秋-计算机软件基础-实验内容
    ------------------------------------------------------------------题目:实验C语言综合复习目的:掌握函数,结构体,指针的使用,预习线性表的顺序存储(顺序表)实验内容:1看PPT, 函数,结构体,指针章节。要求: -----------------------------------------------------------......
  • 2008秋季-计算机软件基础-线性表的顺序存储(顺序表)
    引例:在一维数组中插入和删除元素//在一维数组中插入和删除元素//2008-8-31#include<stdio.h>voidmain(){//在一维数组位置Location处插入EintList[10]={0,1,2,3,4,5};intListLength=6;//表长intE=6;//被插入的元素inti;//循环变量intLocati......
  • 2008秋季-计算机软件基础-如何使用FTP下载局域网内资源
    1打开IE2在地址栏输入FTP地址ftp://194.168.0.823选择文件,复制到本机......
  • 2008秋季-线性表的链式存储(仅单链表)
    /*---------------------------------------------------------Title:单链表Date:September1,2008Fuction:单链表的初始化,创建,插入,删除,查找结点。参考PPT讲稿或者教材2.2.4节.(p56-63)----------------------------------------------------------*/#inclu......
  • 2008秋-计算机软件基础-结构体与指针复习
    //结构体与指针#include<string.h>#include<stdio.h>structstudent{intnumber;charname[10];};voidmain(){structstudenta;structstudent*ptr=&a;a.number=10;//ptr->number=10;strcpy(a.name,"li");//strcpy(ptr->......
  • 2008秋-顺序栈-顺序存储结构的栈
    /*---------------------------------------------------------Title:SequenceStack(顺序栈)顺序栈-顺序存储结构的栈请先阅读教材67页,2.3.2,2.3.3节,栈的定义及基本运算(注意以下程序为简化后的,仅供入门学习之用)-------------------------------------------------......