冒泡排序--数据结构篇

Posted C语言编程学习

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序--数据结构篇相关的知识,希望对你有一定的参考价值。

冒泡排序算法的运作如下:(从后往前)

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

冒泡排序--数据结构篇

#include <stdio.h>

#define MAX 255

int R[MAX];

int Partition(int i,int j)

{/* 调用Partition(R,low,high)时,对R[low..high]做划分,*/

     /* 并返回基准记录的位置 */

      int pivot=R[i]; /* 用区间的第1个记录作为基准 */

      while(i<j){ /* 从区间两端交替向中间扫描,直至i=j为止 */

        while(i<j&&R[j]>=pivot) /* pivot相当于在位置i上 */

          j--;  /* 从右向左扫描,查找第1个关键字小于pivot.key的记录R[j] */

        if(i<j) /* 表示找到的R[j]的关键字<pivot.key  */

            R[i++]=R[j]; /* 相当于交换R[i]和R[j],交换后i指针加1 */

        while(i<j&&R[i]<=pivot) /* pivot相当于在位置j上*/

            i++; /* 从左向右扫描,查找第1个关键字大于pivot.key的记录R[i] */

        if(i<j) /* 表示找到了R[i],使R[i].key>pivot.key */

            R[j--]=R[i]; /* 相当于交换R[i]和R[j],交换后j指针减1 */

       } /* endwhile */

      R[i]=pivot; /* 基准记录已被最后定位*/

      return i;

} /* end of partition  */


void Quick_Sort(int low,int high)

{ /* 对R[low..high]快速排序 */

     int pivotpos; /* 划分后的基准记录的位置 */

     if(low<high){/* 仅当区间长度大于1时才须排序 */

pivotpos=Partition(low,high); /* 对R[low..high]做划分 */

        Quick_Sort(low,pivotpos-1); /* 对左区间递归排序 */

        Quick_Sort(pivotpos+1,high); /* 对右区间递归排序 */

      }

} /* end of Quick_Sort */


int main()

{

int i,n;

clrscr();

puts("Please input total element number of the sequence:");

scanf("%d",&n);

if(n<=0||n>MAX)

{

printf("n must more than 0 and less than %d. ",MAX);

exit(0);

}

puts("Please input the elements one by one:");

for(i=1;i<=n;i++)

scanf("%d",&R[i]);

puts("The sequence you input is:");

for(i=1;i<=n;i++)

printf("%4d",R[i]);

Quick_Sort(1,n);

puts(" The sequence after quick_sort is:");

for(i=1;i<=n;i++)

printf("%4d",R[i]);

puts(" Press any key to quit...");

return 0;

}

你说你喜欢雨,但是你在下雨的时候打伞

你说你喜欢太阳,但你在阳光明媚的时候躲在阴凉的地方

你说你喜欢风,但是在刮风的时候你却关上了窗户

这就是为什么我会害怕你说你也喜欢广告

因为你连“Java编程精简实例”都没有关注


以上是关于冒泡排序--数据结构篇的主要内容,如果未能解决你的问题,请参考以下文章

第一篇排序算法|冒泡排序

冒泡排序--数据结构篇

常用排序算法之冒泡排序选择排序

Qz学算法-数据结构篇(排序算法--冒泡选择)

经典算法学习——链表实现冒泡排序

学而时习之集合与多线程篇: 选择排序 VS 冒泡排序