C语言排序方法总结

时间:2024.4.30

排序方法总结:

1、 最原始的排序算法——比较法

基本思想:从数组的第一个元素开始,依次和后面的元素比较,如果比当前元素值小则互换值。

结论:比较法排序算法简单易于实现,但是算法执行效率低,排序过程中有多次数据交换的操作。

程序代码://对N个数进行升序排序 for (i=0;i<N-1;i++)

{

for (j=i+1;j<N;j++)

{

if (a[i]>a[j])

{

t=a[i];

a[i]=a[j];

a[j]=t;

}

}

}

2、 最简单的排序算法——冒泡法(两两比较,逆序交换) 基本思想:将相邻两个数比较,将小的调到前头。

结论:冒泡法排序比较和交换数据次数减少,算法执行效率有所提高。 程序代码://对N个数进行升序排序

for (i=0;i<N-1;i++) /*i只控制外层循环执行的次数*/ {

for (j=0;j<N-1-i;j++)

/*j既控制内层循环执行的次数,又可作为比较数的下标*/ {

if (a[j]>a[j+1])

{

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

3、 效率最高的排序算法——选择法(逐个比较,逆序交换) 基本思想:设min为每轮比较的最小值元素的下标值,

第一轮先假设a[0]为最小值,min=0;用a[min]和a[1],a[2],…,a[n-1]比较,出现比a[min]小的值,让min=j;比较完毕,a[min]为第一轮最小值,将a[0]与a[min]互换,此时a[0]里存放最小值。

第二轮假设a[1]为最小值,min=1;用a[min]和a[2],…,a[n-1]比较,出现比a[min]小的值,让min=j;比较完毕,a[min]为第二轮最小值,将a[1]与a[min]互换,此时a[1]里存放次小值。 重复以上操作。外循环为n-1次,内循环比较n-i次. 结论:每轮比较后只交换一次数据,因此算法执行效率最高。 程序代码://对N个数进行升序排序

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

{

k=i;

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

if(a[j]<a[k])

k=j; /*k指示当前比较的最小值下标*/

if(k!=i)

{

t=a[i];

a[i]=a[k];

a[k]=t;

}

}


第二篇:c语言 排序算法总结


排序算法总结

选择法排序:

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

{ max=i;

for(j=i+1;j<10;j++) if (a[max]<a[j])

max=j;

/* max为查找范围最大数所在元素下标 */ if (max != i) (if语句可省略) { temp=a[i];

a[i]=a[max];

a[max]=temp;}

}

直接排序法:

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

for( j=i+1;j<10;j++)

/* 当前元素与后续各元素逐个比较交换 if (a[i]<a[j])

{ temp=a[i];

a[i]=a[j];

a[j]=temp;

} */

冒泡法排序:

for(i=9;i>=1;i--)

{ k=i;

/* k为每轮比较范围的终止元素下标 */ for(j=0;j<=k-1;j++) if (a[j]>a[j+1])

{ temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;}

}

冒泡法排序的改进:

for(i=9;i>=1;i--)

{ swap=0;

for(j=0;j<=i-1;j++) if (a[j]>a[j+1])

{ temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

swap=1; }

if(swap==0) break;

}

更多相关推荐:
排序方法总结

选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法:这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡:复杂度为O…

排序方法总结

1.快速排序voidQuickSort(int*list,intleft,intright,intindex){inti,j,k;intpivot;inttemp;i=left;j=right+1;pivot=…

各种排序算法的总结和比较

1快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1)如果不多于1个数据,直接返回。(2)一般选择序列最左边…

C语言排序方法总结

C语言排序方法学的排序算法有插入排序合并排序冒泡排序选择排序希尔排序堆排序快速排序计数排序基数排序桶排序没有实现比较一下学习后的心得我不是很清楚他们的时间复杂度也真的不知道他们到底谁快谁慢因为书上的推导我确实只...

排序学习方法总结

排序学习方法引子LearningtoRank在淘宝中的应用怎样把用户想要的好的商品排到网页的前面怎样调节不同卖家的流量给质量好的并且价格不便宜的商品更多流量来引导市场更加规范是淘宝运营要考虑的问题需要解决的问题...

C语言常用的三种排序方法总结与探讨

C语言常用的三种排序方法总结与探讨排序是程序设计中非常重要的内容它的功能是将一组无序的的数据排列成有序的数据序列经过排列后的数据要么是从大到小排列要么是从小到大排列一般也只有这两种情况例如我们统计班级学生的成绩...

经典排序算法总结(代码)

经典排序算法总结代码fly分享目录冒泡法2快速排序3插入排序4希尔shell排序5选择排序6堆排序7归并排序9附排序算法原理flash演示includeltiostreamgtincludeltstringgt...

C语言数组排序总结

很多朋友是以谭浩强老师编的《c语言教程》作为学习c语言的入门教程的。书中涉及排序问题一般都以“冒泡法”和“选择法”实现。为了扩大视野,增加学习编程的兴趣,我参阅了有关书籍,整理了几种排序法,写出来同大家共勉。(…

7种排序算法总结

7种排序算法总结整理的时候资源来自网络不妥的联系我谢谢事实上目前还没有十全十美的排序算法有优点就会有缺点即使是快速排序法也只是在整体性能上优越它也存在排序不稳定需要大量辅助空间对少量数据排序无优势等不足因此我们...

7种排序算法总结

7种排序算法总结整理的时候资源来自网络不妥的联系我谢谢事实上目前还没有十全十美的排序算法有优点就会有缺点即使是快速排序法也只是在整体性能上优越它也存在排序不稳定需要大量辅助空间对少量数据排序无优势等不足因此我们...

排序算法总结

排序算法总结一、插入排序(InsertionSort)1.基本思想:每次将一个待排序的数据元素,插入到前面已经排好序的数列中的适当位置,使数列依然有序;直到待排序数据元素全部插入完为止。2.排序过程:【示例】:…

八大排序算法总结

八大排序算法总结插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判…

排序方法总结(38篇)