精华内容
下载资源
问答
  • 递归实现数组排序

    千次阅读 2012-11-13 11:22:19
    通过递归实现整数数组排序。搞了半天没有终止条件。要牢记。 void Sort1(int n,int *p) { int i =0; int temp =0; if(n==1) { return; } for(i=0;i;i++) { if(*(p+i)<*(p+i+1)) {

    通过递归实现整数数组的排序。搞了半天没有终止条件。要牢记。

    void Sort1(int n,int *p)
    {
       int i =0;
       int temp =0;
       
       if(n==1)
       {
         return;
       }
       
         
       for(i=0;i<n-1;i++)
       {      
    	   if(*(p+i)<*(p+i+1))
    	   {
    	      temp = *(p+i);
              *(p+i) = *(p+i+1);
              *(p+i+1) = temp;
    	   }
       }   
       
       Sort1(n-1,p);  
    }

    不要忘记下面的代码:

       if(n==1)
       {
         return;
       }


    展开全文
  • 递归实现数组快速排序,思路: 1、先找出数组中 中间的数 2、创建左边、右边的空数组 3、将数组中的每个数与中间的数字相比较,如果小,就放到新创建的左边的数组中,如果大,就放到新创建的右边的数组中; 4、...

    用递归实现数组快速排序,思路:
    1、先找出数组中 中间的数
    2、创建左边、右边的空数组
    3、将数组中的每个数与中间的数字相比较,如果小,就放到新创建的左边的数组中,如果大,就放到新创建的右边的数组中;
    4、如果数组被分到只有一个数的时候 函数结束 返回数组
    5、递归

    function quickSort(arr) {   //创建函数
    	var mid = arr.length % 2 == 0 ? arr.length / 2 : (arr.length + 1) / 2; //取出数组中中间的数字
    	var left = [];		//创建左边的空数组
    	var right = [];		//创建右边的空数组
    	if(arr.length < 2)
    		return arr;		//递归的结束条件
    	}
    	for(var i = 0; i < arr.length; i++) {    //循环遍历 
    		if(mid != i && arr[i] < arr[mid]) {      // 不让数组中 中间的数 与自己进行比较 
    	   		left.push(arr[i]) //如果数字比中间数小 就放到左边的数组
    		}
    	 	if(mid != i && arr[i] > arr[mid]) {
    	   		right.push(arr[i])  //如果数字比中间数大 就放到右边的数组
    	 	}
    	}
    	return fn(left).concat(arr[mid]).concat(fn(right)) //递归 将左边的数组与右边的数组再进行划分 
    }
    
    展开全文
  • Java进阶课程代码包含文件读写IO流,递归算法思想,数组排序、生产模式(单体、工厂)
  • 使用递归方法实现数组排序(C++)

    千次阅读 2019-04-09 20:35:11
    编写一组重载的排序函数,可以对两个整数、三个整数、四个整数、整数数组从大到小排序,函数名为sort,其中数组排序应使用递归的方法,另补充print函数,在一行显示排序后的数组元素。 用递归的方法进行数组排序:题目...

    最近在学习C++,顺便复习一下C语言的知识,提高下自己的编程能力,很多东西不用就忘记了。
    这其实是一道很简单的题,自己比较菜,一些点想了蛮久,记录一下。
    题目
    编写一组重载的排序函数,可以对两个整数、三个整数、四个整数、整数数组从大到小排序,函数名为sort,其中数组排序应使用递归的方法,另补充print函数,在一行显示排序后的数组元素。
    用递归的方法进行数组排序:题目要求从大到小,所以对一个长度为n的数组,经过一轮排序找出最小的数放在a[n-1];对于长度为n-1的数组,经过一轮遍历比较找出最小的数放在a[n-2]……不断向前,从而达到递归的效果。
    代码如下:

    #include <iostream>
    #include <cmath>
    #include <string>
    using namespace std;
    
    void sort(int &m, int &n)
    {
    	int tmp;
    	if (m < n)
    	{
    		tmp = n;
    		n = m;
    		m = tmp;
    	}
    }
    
    void sort(int &m, int &n,int &p)
    {
    	sort(m, n);
    	sort(m, p);
    	sort(n, p);
    }
    
    void sort(int &m, int &n, int &p, int &q)
    {
    	sort(m, n, p);
    	sort(m, n, q);
    	sort(n, p, q);
    }
    
    void sort(int a[], int n)
    {
    	int tmp;
    	for (int i = 0; i < n; i++)
    	{
    		if (a[i] < a[n - 1])
    		{
    			tmp = a[i];
    			a[i] = a[n - 1];
    			a[n - 1] = tmp;
    		}
    	}
    	if (n >2)
    	{
    		sort(a, n - 1);
    		n--;
    	}	
    }
    
    void print(int a[], int n)
    {
    	cout << a[0];
    	for (int i = 1; i < n; i++)
    	{
    		cout << " " << a[i];
    	}
    }
    
    int main()
    {
    	int a, b, c, d;
    	int data[100];
    	int k, n, i;
    	cin >> k;
    	switch (k)
    	{
    	case 1:
    		cin >> a >> b;
    		sort(a, b);
    		cout << a << " " << b << endl;
    		break;
    	case 2:
    		cin >> a >> b >> c;
    		sort(a, b, c);
    		cout << a << " " << b << " " << c << endl;
    		break;
    	case 3:
    		cin >> a >> b >> c >> d;
    		sort(a, b, c, d);
    		cout << a << " " << b << " " << c << " " << d << endl;
    		break;
    	case 4:
    		cin >> n;
    		for (i = 0; i < n; i++)
    		{
    			cin >> data[i];
    		}
    		sort(data, n);
    		print(data, n);
    		break;
           default:break;
    	}
    	return 0;
    }
    

    尤其要注意的就是 void sort(int a[], int n) 函数中

        if (n >2)
    	{
    		sort(a, n - 1);
    		n--;
    	}	
    

    用 if 不用 while ,脑子懵了……

    虽然傻 但还是不能放弃啊,给自己加个油咯~

    展开全文
  • 递归实现数组全排列

    千次阅读 2015-09-13 19:24:26
    设计一个递归算法求n个不同字符的所有全排列:例如 123: 123,132,213,231,312,321 要点: 1.n个元素的排列=(n-1)的排列+剩下元素作为前缀; 2.如果只有一个元素的全排列,说明已经排列好,可以输出排列结果; 3.不断...

    设计一个递归算法求n个不同字符的所有全排列:例如

    123:

    123,132,213,231,312,321

    要点:

    1.n个元素的排列=(n-1)的排列+剩下元素作为前缀;

    2.如果只有一个元素的全排列,说明已经排列好,可以输出排列结果;

    3.不断将每个元素放作第一个元素,然后将这个元素作为前缀,并将其余元素继续全排列,等到出口,出口出去后还需要还原数组;

    而要得到(n-1)个数的全排列就必须得到(n-2)个数的全排列,,,最后得到一个数的全排列就是其本身,这也是递归的出口

    void getarr1(char str[],int k,int n){
    int i;
    char t;
    if(k==n-1){
     for(i=0;i<n;i++)
       printf("%c",str[i]);
    printf("\n");}//前n-1个数排列已经确定,递归到只有一个数
    else {
     for(i=k;i<n;i++)
     {t=str[k];
      str[k]=str[i];
     str[i]=t;
      getarr(str,k+1,n);
     t=str[i];
     str[i]=str[k];
     str[k]=t;}
        }
    }
    类似地,

    void getarr(char str[],int k,int n){
    int i;
    char t;
    if(k==0){
     for(i=0;i<n;i++)
       printf("%c",str[i]);
    printf("\n");}//只有一个元素的全排列
    else {
     for(i=0;i<=k;i++)
     {t=str[k];
      str[k]=str[i];
     str[i]=t;
      getarr(str,k-1,n);
     t=str[i];
     str[i]=str[k];
     str[k]=t;}
        }}


    展开全文
  • 递归排序数组(图文讲解)

    千次阅读 2020-03-03 16:20:56
    递归排序数组 ...题中要求用递归来给数组排序,所以我们可以通过次递归函数排一个的情况,将每个数排到相应位置上。对这个问题,我给出了两个方案。 方案一:前排法 将要排序的元素下标和值都先保存下来,...
  • 使用递归思想实现数组排序方法的定义: 递归排序 recursiveSort(array) { //递归结束条件 if (array.length <= 1) { return array; } //取中间元素的索引 var index = Math.floor(array.length / 2); //...
  • 1、一棵二叉树前序序列为A B D E G C F H I 对称序列为DBGEACHFI则其后序列为?... 前序排序是先根节点,再左右节点;对称序列是先左节点,然后根节点,再右节点;后续序列是先左节点,然
  • 利用C语言的递归算法对数组排序

    千次阅读 2019-07-30 17:41:17
    录入一串整数,通过调用selection_sort函数和sort函数来排序这些整数。 selection_sort函数描述: 1.确定第n个数组元素;2.递归调用本身 sort函数描述: 搜索数组找出最大的元素,并返回到数组最后 #include &...
  • 递归&数组&三种排序

    2019-07-25 23:16:59
    递归是一种针对使用单的循环难以编程实现的问題,提供优雅解决方案的 技术 所有的循环都可以转为递归,但有的递归不能转为循环 递归主要是把大的问题逐步化为解小的问题 某些情况下,递归调用可以帮助你给出一个...
  • 实现数组排序的几种方法

    千次阅读 2018-11-07 11:08:32
    这里介绍两种思路实现冒泡排序,最终的结果是实现从小到大的排序。 第一种是每相邻的两个元素进行比较,如果第一个元素大于第二个元素,则交换这两个元素的位置。如此两两比较然后交换,一轮下来,最大的元素会跑到...
  • #!/usr/bin/python # -*- coding: UTF-8 -*- def sort( Arr , newArr = [] ): if len(Arr) > 0 : lenNum = len(newArr);... #Arr[0] 当前值 比数组的第一位还小 if newArr[0] &...
  • 主要介绍了PHP数组递归排序实现方法,结合实例形式分析了php基于递归算法针对特定key对数组进行排序的相关操作技巧,需要的朋友可以参考下
  • 递归实现冒泡排序

    千次阅读 2020-11-19 10:24:25
    //用递归实现输出数组 void output(int arr[], int n){ static int i = 1; if(i == n){ printf("%d\n",arr[n - 1]); //此处的i = 1不能省略,否则排序后第二次输出时,就会输出不全,自己可以试试. i = 1;
  • 1、给定一个含有n个元素的整型数组a,求a
  • 传入数组,使用递归算法,生成数组元素的所有排列组合
  • 递归数组中的最大值

    千次阅读 2018-09-30 16:54:26
    递归用于归并算法、快速排序算法等。接下来,我们先看一个用递归来实现数组最大值的例子。 我们的递归思路是这样的,把一个数组拆分成两个部分,左部分和右部分,然后分别对每个部分求最大值,最后两个部分进行...
  • //递归判断数组是否升序 public class IsAccendListRecursive { public static void main(String[] args) { IsAccendListRecursive is = new IsAccendListRecursive(); int[][] a = { { 1, 2, 3, 4, 5, 6, 7 ...
  • C语言用递归实现数组逆序排列

    千次阅读 2019-09-23 13:12:42
    //C语言用递归实现数组逆序排列 #include<stdio.h> #define N 7 int *reverse(int *a,int *b) { if(*a==0) return a ; reverse(a+1,b-1); *b=*a; } main() { int i; int static a[]={1,2,6,4,5,3,7},b...
  • 递归数组全排列(java)

    千次阅读 2016-12-19 22:50:56
    最近项目的一个小问题,求数组元素的全排列(每个元素值都不一样),目前考虑用最简单的递归方法实现递归方式实现也有一些弊端,比如数组元素比较多时可能导致栈溢出的错误。
  • 本文实例讲述了PHP递归实现快速排序的方法。分享给大家供大家参考,具体如下: 首先我们要理解一下快速排序的原理:...递归出口:我们什么时候不需要再对新数组不进行排序了呢?就是当数组元素个数变成1的时候,所以
  • 该文件是一个C语言程序代码,功能为:用递归与迭代的方法分别实现数组排序与查找,程序简明扼要,很容易看懂的……
  • Java实现数组排序递归

    千次阅读 2016-01-25 23:33:38
    排序思路:假设有n个数需要进行全排列,我们可以把每个数都放到第一个位置,然后剩下的n-1个数进行全排列。 * 即有n*(n-1)!种可能性,与n个数进行全排列的n!次可能性一致 利用递归的方式,依此类推当剩下的数个数为1...
  • 过程可以递归进行,以此达到整个数据变成有序序列。 一趟快速排序的算法是: 1)设置两个变量i、j,排序开始的时候:i=0,j=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即key=A[0]; 3)从j开始向前搜索,...
  • 快速排序思想,整个排序过程只需3步: 1.找一个基准点。 2.建立两个数组,分别放在左右两边。 3.利用递归,进行下一次的比较。 function sortarr(arr){ //instanceof Array判断 取反的arr是否是数组 if...
  • 注意:由于二分法只适用于有序数组的元素查找,对于无序数组,我们必须先对其进行排序数组可由Math.random()方法结合循环自动生成一个固定长度的int数组,然后调用Arrays.sort()方法对其排序,然后得到我们想要...
  • 快速排序 数组+递归实现

    千次阅读 2016-04-17 19:52:56
    快速排序 数组实现 基本思想: 1. 选取用来作分割的元素(也称为partition主元),最简单的分割方法是选定待排序数中的第一个数为partition主元,主元e是数组arr中第i个元素,主元e左边的元素都不大于e,主元e右边...
  • 数组最大最小值我们可以用遍历或者最简单的排序方法来实现,但是那样子的时间复杂度将会大很多,因此我们可以采用分治思想来求最大最小值,即先求左右两部分,即先求出左半部分的最大最小值,再求出右半部分的最大...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,577
精华内容 67,030
关键字:

递归实现数组排序