Finding smallest value in an array most efficiently

后端 未结 13 1686
慢半拍i
慢半拍i 2020-11-29 07:02

There are N values in the array, and one of them is the smallest value. How can I find the smallest value most efficiently?

13条回答
  •  隐瞒了意图╮
    2020-11-29 07:59

    If the array is sorted in ascending or descending order then you can find it with complexity O(1). For an array of ascending order the first element is the smallest element, you can get it by arr[0] (0 based indexing). If the array is sorted in descending order then the last element is the smallest element,you can get it by arr[sizeOfArray-1].

    If the array is not sorted then you have to iterate over the array to get the smallest element.In this case time complexity is O(n), here n is the size of array.

    int arr[] = {5,7,9,0,-3,2,3,4,56,-7};
    int smallest_element=arr[0] //let, first element is the smallest one
    
    for(int i =1;i

    You can calculate it in input section (when you have to find smallest element from a given array)

    int smallest_element;
    int arr[100],n;
    cin>>n;
    for(int i = 0;i>arr[i];
    if(i==0)
    {
        smallest_element=arr[i]; //smallest_element=arr[0];
    }
    else if(arr[i]

    Also you can get smallest element by built in function

    #inclue
    int smallest_element = *min_element(arr,arr+n); //here n is the size of array
    

    You can get smallest element of any range by using this function such as,

    int arr[] = {3,2,1,-1,-2,-3};
    cout<<*min_element(arr,arr+3); //this will print 1,smallest element of first three element
    cout<<*min_element(arr+2,arr+5); // -2, smallest element between third and fifth element (inclusive) 
    

    I have used asterisk (*), before min_element() function. Because it returns pointer of smallest element. All codes are in c++. You can find the maximum element in opposite way.

提交回复
热议问题