c语言考试。问数组,常见的数组排序算法有那几种?选择一个描述过程。

如题所述

有插入排序:直接插入排序、折半插入排序、希尔排序;交换排序:冒泡排序、快速排序;选择排序:简单选择排序、堆排序;归并排序;基数排序。
  常用冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面(数组由小到大排序)。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后,此时第一趟结束,在最后的数必是所有数中的最大数。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
  由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。
  用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,9,对于每一个i, j的值依次为1,2,...10-i。
代码:
for(i=0; i<NUM-1; i++) /*外循环:控制比较趟数*/
for(j=NUM-1; j>i; j--) /*内循环:进行每趟比较*/
if(data[j]<data[j-1]) /*如果data[j]大于data[j-1],交换两者的位置*/
{temp=data[j];
data[j]=data[j-1];
data[j-1]=temp;
};
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-30
常见的有冒泡、选择、插入法。其中冒泡最常用,列如:N个数字排序,外层循环N-1次,内层循环N-1-i.i为循环变量,明白不?追问

太简单了。希望能详细下。 我这是考试题。。

追答

int t[]=10;//排序数
for(int i=0;ia[j])
{ int temp=a[i];a[i]=a[j];a[j]=temp; }
}
}
...

c语言考试。问数组,常见的数组排序算法有那几种?选择一个描述过程。
有插入排序:直接插入排序、折半插入排序、希尔排序;交换排序:冒泡排序、快速排序;选择排序:简单选择排序、堆排序;归并排序;基数排序。常用冒泡排序的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面(数组由小到大排序)。即首先比较第1个和第2个数,将小数放前,大数放后。然后比...

C语言大牛推荐七大排序算法学生来看
6.桶排序 设置一个定量的数组当作空桶子 寻访序列,并且把项目一个一个放到对应的桶子去。对每个不是空的桶子进行排序。7.基数排序 取得数组中的最大数,并取得位数:arr为原始数组,从最低位开始取每个位组成radix数组;对radix进行计数排序(利用计数排序适用于小范围数的特点)从不是空的桶子里把项目...

常用的数据排序算法有哪些,各有什么特点?举例结合一种排序算法并应用数...
1、插入排序(直接插入排序、折半插入排序、希尔排序);2、交换排序(起泡排序、快速排序);3、选择排序(直接选择排序、堆排序);4、归并排序;5、基数排序;学习重点 1、掌握排序的基本概念和各种排序方法的特点,并能加以灵活应用;2、掌握插入排序(直接插入排序、折半插入排序、希尔排序)、交换排序(起泡排序、快速排序)...

求C语言将数组元素大小排序!!
10、2、3、4、5、6、9、8、7、1是输入的待排序的数列,经过第一次排序,将最大的,10放在最后,第二次排序,将剩下的2、3、4、5、6、9、8、7、1进行冒泡,将当前最大的9放在倒数第二的位置,以此类推。以下是具体代码:include <stdio.h> int main(){ int nums[10] = {10, 2, 3...

C语言数组A用选择排序
插入法是一种比较直观的排序方法。它首先把数组头两个元素排好序,再依次把后面的元素插入适当的位置。把数组元素插完也就完成了排序。void insert(int *a,int n){ int i,j,temp;for(i=1;i<n;i++) { temp=a[i ]; \/*temp为要插入的元素*\/ j=i-1;while(j>=0&&temp=1)的那几个元...

C语言排序
\/\/总共给你整理了7种排序算法:希尔排序,链式基数排序,归并排序\/\/起泡排序,简单选择排序,树形选择排序,堆排序,先自己看看吧,\/\/看不懂可以再问身边的人或者查资料,既然可以上网,我相信你所在的地方信息流通方式应该还行,所有的程序全部在VC++6.0下编译通过\/\/希尔排序 #include<stdio.h> typedef int InfoType; \/\/...

c语言如何将一个数组中的数值排好顺序?
1.第一个for循环:利用数组循环输入4个变量。2.第二个for循环:该循环的意思是如果a[0]>a[1]的话,两个变量的值交换,利用循环依次比较。要注意的是i<3,因为其中有i+1,i最大取到2,也就是i+1最大取到3才正确。3.第三个for循环:利用循环依次输出排序后的数组,每输出一个加一个空格以便...

C语言:用选择排序法对一个数组里的数进行排序,从小到大,要求选出小的...
int *a = (int *)malloc(sizeof(int) * n); \/\/动态分配数组空间 ,有几个元素,n就是几。for(i=0; i<n; i++){ a[i]=录入数值;} Sort(a, n);for(j=0; j<n; j++){ printf("%d",a[ij);\/\/输出的内容就是排序好了的 }\/\/下面方法是用来排序的 void Sort(int *a, int...

c语言怎么输出数组第一个数,和由大到小排序,并输出最大的数
源程序如下:define N 5 \/\/定义要排序的个数N为5个 include"stdio.h"===主程序部分=== main() \/\/主程序开始 { int a[N],i,j,temp; \/\/定义数组a,变量i,j和中间存储变量temp printf("please input %d numbers\\n",N); \/\/输出文本,"请输入N个数字(此处N=5)"===输入并...

c语言中什么是算法
3. 描述如何排序一个数组:使用冒泡排序算法,从数组的第一个元素开始,依次比较相邻的元素,如果前一个元素大于后一个元素,则交换它们的位置。重复以上步骤,直到整个数组都排序完成。4. 描述如何求一个数的平方根:使用牛顿迭代法,首先猜测一个平方根的值,然后使用这个猜测值和原数进行运算,得到一...

相似回答