2014-05-20 3 views
2

J'essaie de faire le tri, sans utilisation d'une méthode ou une fonctionTri des valeurs de chaîne sans utiliser la méthode/fonction

Mon code:

string[] names = { "Flag", "Nest", "Cup", "Burg", "Yatch", "Next" };      
    string name = string.Empty; 
    Console.WriteLine("Sorted Strings : "); 

    for (int i = 0; i < names.Length; i++) 
     { 
      for (int j = i + 1; j < names.Length; j++) 
      { 
       for (int c = 0; c < names.Length; c++) 
       { 
        if (names[i][c] > names[j][c]) 
        { 
         name = names[i]; 
         names[i] = names[j]; 
         names[j] = name; 
        } 
       } 

      } 
      Console.WriteLine(names[i]); 
     } 

S'il vous plaît laissez-moi apporter une solution à ce code?

Dans ce code, je reçois « index était en dehors des limites du tableau » exception

+1

Et pourquoi voulez-vous pas utiliser une méthode ou une fonction? Cela peut être aussi simple que d'utiliser une simple instruction LINQ ... –

+0

Si vous ne voulez pas exécuter de code (ce qui entraîne l'appel d'une méthode ou d'une fonction), il n'y a pas beaucoup de choses disponibles pour résoudre ce problème. – DrCopyPaste

+0

Quels sont précisément les problèmes avec ce code? Vous obtenez de meilleures réponses si vous posez des questions spécifiques. Voir aussi http://stackoverflow.com/help/how-to-ask –

Répondre

2

Vous devez mettre en œuvre un algorithme de tri.

Un algorithme très simple, vous pouvez mettre en œuvre est le insertion sort:

string[] names = { "Flag", "Nest", "Cup", "Burg", "Yatch", "Next" }; 

for (int i = 0; i < names.Length; i++) 
{ 
    var x = names[i]; 
    var j = i; 
    while(j > 0 && names[j-1].CompareTo(x) > 0) 
    { 
     names[j] = names[j-1]; 
     j = j-1; 
    } 
    names[j] = x; 
} 
+2

@siva Que voulez-vous dire, sans algorithmes? Vous demandez un algorithme! –

+0

Je ne dis pas comme ça ... j'essaye avec swapping & looping – kasim

+0

@siva C'est exactement ce que cette réponse fait –

2
string[] names = { "Flag", "Next", "Cup", "Burg", "Yatch", "Nest" }; 
     string name = string.Empty; 
     Console.WriteLine("Sorted Strings : "); 

     for (int i = 0; i < names.Length; i++) 
     { 
      int c = 0; 
      for (int j = 1; j < names.Length; j++) 
      { 
       if (j > i) 
       { 
       Sort: 
        if (names[i][c] != names[j][c]) 
        { 
         if (names[i][c] > names[j][c]) 
         { 
          name = names[i]; 
          names[i] = names[j]; 
          names[j] = name; 
         } 
        } 
        else 
        { 
         c = c + 1; 
         goto Sort; 
        }       
       } 
      } 
      Console.WriteLine(names[i]); 
     } 
3
 int temp = 0; 
     int[] arr = new int[] { 20, 65, 98, 71, 64, 11, 2, 80, 5, 6, 100, 50, 13, 9, 80, 454 }; 
     for (int i = 0; i < arr.Length; i++) 
     { 
      for (int j = i + 1; j < arr.Length; j++) 
      { 
       if (arr[i] > arr[j]) 
       { 
        temp = arr[j]; 
        arr[j] = arr[i]; 
        arr[i] = temp; 
       } 
      } 
      Console.WriteLine(arr[i]); 
     } 
     Console.ReadKey(); 
0

Je vous étaient contradictoires en longueur du tableau de noms et la chaîne de comparaison. Voici la solution de travail. Je l'ai testé, il travaille maintenant

static void Main(string[] args) 
     { 
      int min=0; 

      string[] names = { "Flag", "Nest", "Cup", "Burg", "Yatch", "Next" }; 
      string name = string.Empty; 
      Console.WriteLine("Sorted Strings : "); 

      for (int i = 0; i < names.Length-1; i++) 
      { 
       for (int j = i + 1; j < names.Length;j++) 
       { 

        if(names[i].Length < names[j].Length) 
          min =names[i].Length; 
        else 
          min =names[j].Length; 
        for(int k=0; k<min;k++) 
        { 
         if (names[i][k] > names[j][k]) 
         { 
          name = names[i].ToString(); 
          names[i] = names[j]; 
          names[j] = name; 
          break; 
         } 
         else if(names[i][k] == names[j][k]) 
         { 
          continue; 
         } 
         else 
         { 
          break; 
         } 

        } 
       } 


      } 
      for(int i= 0;i<names.Length;i++) 
      { 
       Console.WriteLine(names[i]); 
       Console.ReadLine(); 
      } 
     } 
    } 
0
class Program 
{ 
    static void Main(string[] args) 
    { 
     int[] arr = new int[] {9,1,6,3,7,2,4}; 
     int temp = 0; 

     for (int i = 0; i < arr.Length; i++) 
     { 
      for (int j = i + 1; j < arr.Length;j++) 
      { 
       if(arr[i]>arr[j]) 
       { 
        temp = arr[j]; 
        arr[j] = arr[i]; 
        arr[i] = temp; 
       } 
      } 

      Console.Write(arr[i]+","); 
     } 
      Console.ReadLine(); 
    } 
+1

Vous devriez lui expliquer pourquoi vous avez fait quoi. Sinon, c'est juste un morceau de code. – Adwaenyth

Questions connexes