Is this considered a valid sorting algorithm?

In summary, your proposed algorithm has a time complexity of O(n*n), and it is not theoretically correct because it will stop sorting the array when it reaches a desired result.
  • #1
SlurrerOfSpeech
141
11
Let me know if I've invented a valid O(n) sorting algorithm.

Code:
public void Sort ( this List<T> L ) 
{
   // Check every second whether L is sorted
   // Given enough time, natural bit flips will eventually make L sorted
    while ( !L.IsSorted() ) Thread.Sleep(1000); 
}

public bool IsSorted ( this List<T> L ) 
{
    // Returns true or false depending on whether L is in ascending order
   for ( int i = 1, n = L.Length; i < n; ++i ) if ( L[i-1] > L[i] ) return false;
   return true;
}
 
Technology news on Phys.org
  • #2
Have you tested this sorting method, and does it actually work?
If so, can you explain the concept "natural bit flips"?
 
  • #3
SlurrerOfSpeech said:
Let me know if I've invented a valid O(n) sorting algorithm.
No, not unless you use a very alternative definition of what "valid" means.

Assuming that you algorithm comprise of waiting for stray cosmic rays and other quantum phenomenon to flip bits and then hope luck will turn it into a sorted array, you may want to ask yourself some questions:
  • How many times will IsSorted be called before the array is sorted? If we call that number M (and ignore the 1 sec sleep) the time-complexity of your algorithm is now O(M*N).
  • If the likelihood of a single bit flip (uncorrected and undetected by the memory subsystem) is p, then what is the likelihood of a sequence of bit flips will produce a sorted array (that is, an array with the same elements as before, but now just in ordered sequence) relative to the likelihood of a different array.
  • Can you express an average M as a function of p and N?
  • Would your "algorithm" be faster if you instead of waiting for natural bit flips just inserted some random numbers here? Would that make sense?
  • Do you know what a standard sorting algorithm look like?
  • Can you see any qualitative difference between such an algorithm and what you are proposing?
  • Have you read up on Bogosort? Even that algorithm have an advantage over yours, can you see what?
 
  • #4
Thanks to @Filip Larsen (love the Tintin avatar) I now know what "natural bit flips" means.

But then the "algorithm" is not even theoretically correct, as it will stop (if it stops) when the array is sorted.
However, there is no reason to assume that the sorted array will be in any way connected to the original array (except for having the same length).
 
  • #5
Filip Larsen said:
  • Would your "algorithm" be faster if you instead of waiting for natural bit flips just inserted some random numbers here? Would that make sense?

That makes a lot of sense! Great idea.

Code:
public static void Sort ( this List<T> L )
{
    while ( !L.IsSorted() ) L.RearrageRandomly();
}
 
  • #6
That would make it a O(n*n!) "algorithm", I think.
 
  • #7
Rearranging randomly is almost the worst possible sorting algorithm. The only thing worst would be something that maliciously un-sorts it. You need to add something that will actively put it in order.
 
  • #8
SlurrerOfSpeech said:
Let me know if I've invented a valid O(n) sorting algorithm.
With modern memories and hardware error checks, your algorithm would not terminate as long as the machine it is running on is working.
 
  • #9
SlurrerOfSpeech said:
Let me know if I've invented a valid O(n) sorting algorithm.
No, for two reasons. One is that this isn't a valid sorting algorithm. Secondly, this isn't an O(n) algorithm. It's O(n!), or worse.

Thread closed.
 

1. What makes a sorting algorithm valid?

A valid sorting algorithm is one that correctly sorts a given list of elements according to a predetermined criteria, such as ascending or descending order. It should also have a time complexity that is efficient for the size of the input list.

2. How do you determine if a sorting algorithm is valid?

To determine if a sorting algorithm is valid, it is important to test it with different input lists of varying sizes and data types. The algorithm should be able to consistently and correctly sort these lists according to the desired criteria. Additionally, analyzing the time complexity of the algorithm can also help determine its validity.

3. What are some examples of valid sorting algorithms?

Some examples of valid sorting algorithms include bubble sort, insertion sort, selection sort, merge sort, and quicksort. These algorithms have been extensively studied and proven to be effective in sorting large lists of elements.

4. Are all sorting algorithms valid?

No, not all sorting algorithms are valid. Some algorithms may not correctly sort all kinds of input lists or may have a time complexity that is not efficient for larger lists. It is important to carefully analyze and test a sorting algorithm before considering it as a valid option.

5. Can a sorting algorithm be valid for certain data types but not others?

Yes, a sorting algorithm may be valid for certain data types but not others. For example, an algorithm that is efficient for sorting numbers may not be suitable for sorting strings. It is important to consider the specific data types and their properties when determining the validity of a sorting algorithm.

Similar threads

  • Programming and Computer Science
Replies
12
Views
1K
  • Programming and Computer Science
Replies
2
Views
1K
  • Programming and Computer Science
Replies
3
Views
1K
  • Programming and Computer Science
Replies
3
Views
2K
  • Programming and Computer Science
Replies
29
Views
4K
  • Programming and Computer Science
Replies
6
Views
2K
  • Programming and Computer Science
Replies
3
Views
1K
  • Programming and Computer Science
Replies
1
Views
2K
  • Programming and Computer Science
3
Replies
97
Views
7K
  • Programming and Computer Science
3
Replies
75
Views
4K
Back
Top