给一个整形数组排序,要求不能声明新的数祖,谁给个答案吧,最好把数组单参数传递的

解决方案 »

  1.   

    .net中,Array可不是数组。简单的可以使用选择排序,用一个变量记录最先的元素的下标,扫描之后与第一个元素交换位置。然后再处理第二个元素以后的。
      

  2.   

    int[] array1={1,3,5,6,7,2,4};
    sort(array1,array1.Length); private void sort(int[] a,int length)
    {
    int i,j,t;
    for(i=0;i<length-1;i++)
    {
    t=i;
    for(j=i+1;j<length;j++)
    {
    if(a[j]<a[t])
    {
    t=j;
    }
    }
    if(t!=i)
    {
    j=a[i];
    a[i]=a[t];
    a[t]=j;
    }
    }
    }
      

  3.   

    晕倒,C#自带:
    Array.Sort(数组名);
      

  4.   

    排列的本质是比较和交换。比较我就不说了楼主要的不声明新的数组。其实就是在数组自己里面操作,是可以实现的。只要按以下方式交换值:
    如交换A和B
    A=A+B;
    B=A-B;
    A=A-B;
      

  5.   

    实现一个ICompare接口,指明对类型的比较方式,事实上,可以对任意类型的数组均可实现升序或降序排序System.Array.Sort( Array array, IComparer comparer);
      

  6.   

    using System;
    using System.Collections;
    namespace ArraySort
    {
    public class DataElement
    {
    public int value;
    public DataElement() {}
    public DataElement(int value) { this.value = value; }
    } public class DataElementComparer : IComparer
    {
    public int Compare(object x, object y)
    {
    return ((DataElement)x).value.CompareTo(((DataElement)y).value);
    }
    } public class Client
    {
    public static void Main() 
    {
    int[] myArray = {9,8,7,6,5,4,3,2,1,0};
    DataElement[] d = new DataElement[10]; for (int i = 0; i < myArray.Length; i++)
    d[i] = new DataElement(myArray[i]); Console.WriteLine("排序前");
    for (int i = 0;i < myArray.Length;i++)
    {
    Console.Write(d[i].value +",");
    } Array.Sort(d, new DataElementComparer()); //排序实例化

    Console.WriteLine("\n排序后");
    for (int i = 0; i < myArray.Length; i++)
    Console.Write(d[i].value + ", ");
    Console.WriteLine();
    }
    }
    }
      

  7.   

    其实排序我没问题,不就是冒泡,插入,还真把第三种排序算法的名字给忘了,我就是想看看参数到调用等,sort(ref params int[] array)这个行不行呀?
      

  8.   

    private void sort(int[] a,int length) 就这样传参数没问题啊
      

  9.   

    冒泡,插入,快速排序
    <C# primer>里面介绍如何用委托进行快速排序,还是很值研究几分钟的。