Hello,I have created this simple program for sorting multidimensional Array :
- using System;
-
- namespace Multidimensional_array_sort
- {
- class Program
- {
- public static void Main(string[] args)
- {
-
- Console.WriteLine();
- Console.WriteLine(" Hello World!");
- Console.WriteLine();
-
- int [,] Array;
-
- Console.Write(" Enter number of elements : n = ");
-
- int n = int.Parse(Console.ReadLine());
-
- Array = new int[n,4];
-
- Console.WriteLine();
- Console.WriteLine(" Element data entry :");
- Console.WriteLine(" *********************");
- Console.WriteLine();
-
- for(int i=0; i<n; i++)
- {
- Array[i,0]=i+1;
- Console.WriteLine(" " +(i+1).ToString() + ". element :");
- Console.WriteLine(" *********************");
- Console.Write(" length : ");
- Array[i,1]=int.Parse(Console.ReadLine());
- Console.Write(" width : ");
- Array[i,2]=int.Parse(Console.ReadLine());
- Array[i,3]=Array[i,1]*Array[i,2];
- Console.WriteLine(" *********************");
- Console.WriteLine();
- }
-
- for(int k=0; k<n-1; k++)
- {
- for(int j=k+1; j<n; j++)
- {
- if(Array[k,3]>Array[j,3]) goto next;
- if(Array[k,3]goto swap;
-
- if(Array[k,1]>Array[j,1]) goto next;
- if(Array[k,1]goto swap;
-
- if(Array[k,2]>Array[j,2]) goto next;
- if(Array[k,2]goto swap;
-
- if(Array[k,0]goto next;
- if(Array[k,0]>Array[j,0]) goto swap;
-
-
- swap:
- {
- int m = Array[j,0];
- Array[j,0]=Array[k,0];
- Array[k,0]=m;
-
- m = Array[j,1];
- Array[j,1]=Array[k,1];
- Array[k,1]=m;
-
- m = Array[j,2];
- Array[j,2]=Array[k,2];
- Array[k,2]=m;
-
- m = Array[j,3];
- Array[j,3]=Array[k,3];
- Array[k,3]=m;
- }
-
- next:
- {
- }
- }
- }
-
-
-
-
- Console.WriteLine();
- Console.WriteLine(" Sorted array :");
- Console.WriteLine(" *******************************");
- for(int i=0; i<n; i++)
- {
- Console.WriteLine("{0,3}{1,3}{2,5}{3,5}{4,12}",
- (i+1),
- Array[i,0],
- Array[i,1],
- Array[i,2],
- Array[i,3]);
- }
- Console.WriteLine(" *******************************");
- Console.WriteLine();
- Console.Write(" Press any key to continue . . . ");
- Console.ReadKey(true);
- }
- }
- }
Array example :
**************************************************************************
element element element element index value 1 value 2 value 1 * value 2 1 50 400 20000 2 100 100 10000 3 100 100 10000 4 50 200 10000 5 200 50 10000 6 400 50 20000 7 400 50 20000**************************************************************************
Sorted Array by column 4 then by column 2 then by column 3 then by column 1 in descending sort order :*************************************************************************
element element element element index value 1 value 2 value 1 * value 2 6 400 50 20000 7 400 50 20000 1 50 400 20000 5 200 50 10000 2 100 100 10000 3 100 100 10000
4 50 200 10000
*************************************************************************
Program works fine but I need sugestions for code optimization. I would prefer program code without GOTO statements. Perhaps there is different algorithm for this kind of array sort.
All the best,
Željko Peric