c语言用递归函数对数排序 c语言递归排序算法

C语言:用递归的方式对数组排序

#include stdio.h

成都创新互联专业为企业提供桑植网站建设、桑植做网站、桑植网站设计、桑植网站制作等企业网站建设、网页设计与制作、桑植企业网站模板建站服务,十余年桑植做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

#define N 8

void selection_sort(int a[], int n) {

int i, t, imax = 0;

if(n  1) return;

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

if(a[imax]  a[i])

imax = i;

}

if(imax != n - 1) {

t = a[n - 1];

a[n - 1] = a[imax];

a[imax] = t;

}

selection_sort(a, n - 1);

int main(void) {

int i, a[N] = {8,5,4,6,1,2,3,7};

printf("排序前:\n");

for(i = 0; i  N; i++)

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

printf("\n");

selection_sort(a, N);

printf("排序后:\n");

for(i = 0; i  N; i++)

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

printf("\n");

return 0;

}

C语言:对输入的十个数进行从小到大排序

1、首先打开编辑软件,新建一个c程序空文件,引入标准库和主函数,定义一个QuickSort函数用来排序,下面首先编写排序函数的:

2、此处用到快速排序思想,通过一趟排序将要排序的数据分割成独立的两部分,即这里用i和j两个变量分割数据,然后一部分的所有数据都比另外一部分的所有数据都要小,接着对这两部分数据分别进行比较排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列:

3、接着编写主函数,主函数中定义一个数组,然后用scanf接受数组,用户输入10个数以后,会将数存在数组array中,然后调用上面处理排序的函数,函数的输入就是刚才输入的数,最后在把排序的结果输出即可:

4、最后编译运行,输入10个数,最后控制台输出了排序的结果,证明程序的逻辑是没有问题的。以上就是C语言输入10个数排序的演示:

C语言对数排序

设3个数分别等于a,b,c

1、先比较a,b大小,如果a大,则进行下一步继续比较,如果b大,则a,b的数值互换

2、同上这次是b,c比较大小

3、最后显示a,b,c

#include

"stdio.h"

main()

{

int

a,b,c,n,m,p;

scanf("%d%d%d",a,b,c);

if(ba)n=a,a=b,b=n;

if(ca)m=a,a=c,c=m;

if(cb)p=c,c=b,b=p;

printf("%d%d%d",a,b,c);

}

C语言利用递归实现插入排序,选择排序,快速排序,归并排序算法。 要求有注释 ! 谢谢各位大神!

//InsertionSort

void insertionSort(int a[], int size) {

int i, j, key;

for (i = 0; i size; i++) {

key = a[i];

j = i-1;

while (j = 0 key a[j]) { //把元素插入到之前的有序元组中

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

j--;

}

a[j+1] = key;

}

}

//MergeSort

void merge(int a[], int p, int q, int r) { //合并两个子元组

int i, j, k, n1, n2;

int *array1, *array2;

n1 = q - p + 1,

n2 = r - q;

array1 = (int *)calloc(n1+1, sizeof(int));

array2 = (int *)calloc(n2+1, sizeof(int));

if (array1 == NULL || array2 == NULL) {

printf("Error: calloc failed in concat\n");

exit(EXIT_FAILURE);

}

for(i = 0; i n1; i++)

array1[i] = a[p + i];

for(i = 0; i n2; i++)

array2[i] = a[q + 1 + i];

array1[n1] = MAXNUMBER;

array2[n2] = MAXNUMBER;

i = 0, j = 0;

for(k = p; k = r; k++)

if(array1[i] = array2[j])

a[k] = array1[i++];

else

a[k] = array2[j++];

free(array1);

free(array2);

}

void mergeSort(int a[], int p, int r) {//归并的递归调用

int q;

if (p r) {

q = (p+r)/2;

mergeSort(a,p,q);

mergeSort(a,q+1,r);

merge(a,p,q,r);

}

}

//QuickSort

int partition(int a[], int p, int r) {//快排的分组函数

int i, j, x, temp;

x = a[r];

i = p - 1;

for (j = p; j r; j++)

if (x a[j]) {

temp = a[++i];

a[i] = a[j];

a[j] = temp;

}

temp = a[++i];

a[i] = a[r];

a[r] = temp;

return i;

}

void quickSort(int a[], int p, int r) { //快排

int q;

if (p r) {

q = partition(a, p, r);

quickSort(a, p, q-1);

quickSort(a, q+1, r);

}

}

//随即版的quickSort

int randomPartition(int a[], int p, int r){

int i, temp;

i = rand();

while( i p || i r)

i = rand();

temp = a[i];

a[i] = a[r];

a[r] = temp;

return partition(a,p,r);

}

void randomQuickSort(int a[], int p, int r){

int q;

if(p r){

q = randomPartition(a,p,r);

randomQuickSort(a,p,q-1);

randomQuickSort(a,q+1,r);

}

}

//BubbleSort();//冒泡排序

void bubbleSort(int a[], int size) {

int i, j, temp;

for (i = size -1; i = 0; i--)

for (j = 0; j i; j++)

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

temp = a[j];

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

a[j+1] = temp;

}

}

C语言 递归实现顺序输出整数 要求实现一个函数,对一个整数进行按位顺序输出?

比如要执行printdigits(1234),则执行

printdigits(1234/10);

printf("%d\n",1234%10);

要先执行printdigits(1234/10),即printdigits(123),变成执行

printdigits(123/10);

printf("%d\n",123%10);

printf("%d\n",1234%10);

要先执行printdigits(123/10),即printdigits(12),变成执行

printdigits(12/10);

printf("%d\n",12%10);

printf("%d\n",123%10);

printf("%d\n",1234%10);

要先执行printdigits(12/10),即printdigits(1),变成执行

printf("%d\n",1);

printf("%d\n",12%10);

printf("%d\n",123%10);

printf("%d\n",1234%10);

以上依次执行打印:1 2 3 4

用c语言递归调用:对数组中10个整数按由小到大排序

#include stdio.h

int a[20];

void f(int n)

{

int i,t;

if(n10)

{

f(n+1);

t=a[n];

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

if(ta[i])

a[i-1]=a[i];

else

break;

a[i-1]=t;

}

}

int main()

{

int i;

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

scanf("%d",a[i]);

f(1);

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

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

printf("\n");

return 0;

}


本文标题:c语言用递归函数对数排序 c语言递归排序算法
当前路径:http://myzitong.com/article/hijjse.html