सबसे छोटी संख्या की अनुक्रमणिका पाएं

It's returning the second element in the array instead of the smallest number's index
I already took the size and all that stuff, this is just the method

public static int FindSmallest (int [] arr1){//start method

    int index = arr1[0];

    for (int i=1; i index ){
            index = arr1[i];
        }

        return index ;
    }

    return 0;

}//end method
0
कृपया इसे पठनीय बनाएं।
जोड़ा लेखक Anubian Noob, स्रोत

4 उत्तर

आप पेपर पर कैसे करेंगे?

  1. अपने सरणी के पहले तत्व के साथ न्यूनतम मान आरंभ करें
  2. संबंधित इंडेक्स को 0 में शुरू करें (सरणी 0 आधार अनुक्रमित हैं)
  3. अपनी सरणी में लूप
  4. यदि आपको न्यूनतम मान से कम संख्या मिलती है, तो न्यूनतम मान को प्राप्त मूल्य के साथ अपडेट करें
  5. अगर 4 संतुष्ट है, तो मौजूदा इंडेक्स के साथ संबंधित इंडेक्स अपडेट करें
  6. अनुक्रमणिका वापस करें
  7. आपने इसे किया है।
5
जोड़ा
कागज आधारित समाधान के लिए +1, कभी-कभी कोड प्रदान करने के बजाय शिक्षित करना बेहतर होता है
जोड़ा लेखक Melquiades, स्रोत
public static int FindSmallest (int [] arr1){//start method

       int index = 0;
       int min = arra1[index];
       for (int i=1; i
2
जोड़ा
+1, आखिरकार कोई ऐसा व्यक्ति जिसने वास्तव में ओपी चाहता था (न्यूनतम मूल्य सूचकांक) का जवाब दिया, न्यूनतम मूल्य नहीं।
जोड़ा लेखक Melquiades, स्रोत
Algorithm FindSmallest (arr1[])
// This Algorithm returns the index of smallest element in the array arr1
// Assumption : index of arr1 starts from 0
//              arr1.length returns the length of arr1
begin
   set index := 0;
   set len   := arr1.length;
   set min   := arr1[index];
   For i:=1 to len,do
   begin
       if arr1[i] < min ,then
       begin
           min   := arr1[i];
           index := i;
       end
   end
   return index;
end
0
जोड़ा

आपकी समस्या वह है जो आप वापस आती है।

कुछ चीजें:

सरणी स्थिर नहीं होनी चाहिए, आपको इसे arrayMin विधि के पैरामीटर के रूप में पास करना चाहिए; मिनट एक स्थानीय सरणी होना चाहिए मेरा चर, स्थैतिक नहीं; मिनट को Integer.MAX_VALUE में प्रारंभ किया जाना चाहिए। यदि आप इसे 1 के साथ प्रारंभ करते हैं, और 2 सरणी का न्यूनतम मान होता है, तो आप इसे कभी वापस नहीं करेंगे; आप एक विधि से कई बार वापस नहीं आ सकते हैं। जैसे ही आप मिनट वापस करते हैं, विधि समाप्त होती है। संभवतः परिवर्तनीय मिनट पर कुछ भ्रम पहले I तत्व वाक्यांश से सबसे छोटी संख्या लौटाएगा। इसका शायद मतलब है कि प्रत्येक पुनरावृत्ति में, परिवर्तनीय मिनट में पहले तत्वों से सबसे छोटी संख्या (वापसी नहीं) होगी।

यहां एक रिफैक्टर है:

public static int arrayMin(int[] arr1) {
        int i = 0;
        int min = Integer.MAX_VALUE;
        if (arr1 == null) {
            return 0;//What if 0 is the minimum value? What do you want to do in this case?
        } else {
            while (i < arr1.length) {
                if (arr1[i] < min) {
                  min = arr1[i];
                }
                i++;
            }
        }
        return min;
    }
0
जोड़ा
यह कोड न्यूनतम एआर 1 तत्वों को वापस देता है जो कि सबसे छोटे तत्व की अनुक्रमणिका नहीं है।
जोड़ा लेखक Luke, स्रोत