c语言 排序算法总结

时间:2024.4.27

排序算法总结

选择法排序:

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;

}


第二篇:C语言排序方法总结


排序方法总结:

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;

}

更多相关推荐:
c语言排序算法总结(主要是代码实现)

冒泡排序(BubbleSort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。…

C语言排序方法总结

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

C语言排序算法小结

1稳定排序和非稳定排序简单地说就是所有相等的数经过某种排序方法后仍能保持它们在排序之前的相对次序我们就说这种排序方法是稳定的反之就是非稳定的比如一组数排序前是a1a2a3a4a5其中a2a4经过某种排序后为a1...

c语言排序算法总结

一希尔Shell排序法Shell排序法includeltstdiohgtvoidsortintvintnintgapijtempforgapn2gapgt0gap2设置排序的步长步长gap每次减半直到减到1fo...

排序算法总结C语言

排序算法总结一插入排序InsertionSort1基本思想每次将一个待排序的数据元素插入到前面已经排好序的数列中的适当位置使数列依然有序直到待排序数据元素全部插入完为止2排序过程示例初始关键字493865977...

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

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

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

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

C语言中三种常见排序算法分析

一、冒泡法(起泡法)算法要求:用起泡法对10个整数按升序排序。算法分析:如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往…

C语言快速排序算法

(一)概述快速排序(QuickSort)是一种有效的排序算法。虽然算法在最坏的情况下运行时间为O(n^2),但由于平均运行时间为O(nlogn),并且在内存使用、程序实现复杂性上表现优秀,尤其是对快速排序算法进…

C语言数据结构_排序算法大全

数据结构---C语言排序算法大全#includestdio.h#includestdlib.h#defineM100voidInsertionSort(inta[],intlength)//插入排序{}void…

全国计算机等级考试二级c语言公共基础知识总结

全国计算机等级考试二级c语言公共基础知识总结第一章数据结构与算法11算法算法是指解题方案的准确而完整的描述算法不等于程序也不等计算机方法程序的编制不可能优于算法的设计算法的基本特征是一组严谨地定义运算顺序的规则...

各种排序算法总结

1冒泡排序交换排序方法之一冒小泡voidBublesortintaintn定义两个参数数组首地址与数组大小intijtempfori0iltn1iforji1jltnj注意循环的上下限ifaigtajtempa...

c语言排序算法总结(36篇)