How to Analyze Bubble Sort Algorithm Efficiency?

Click For Summary

Discussion Overview

The discussion revolves around analyzing the efficiency of the bubble sort algorithm, specifically focusing on calculating the probability of success for various conditional statements (if, for, while) within the algorithm. Participants explore different implementations of bubble sort and seek methods to quantify the performance of these algorithms based on their conditional statements.

Discussion Character

  • Exploratory
  • Technical explanation
  • Mathematical reasoning

Main Points Raised

  • One participant requests assistance in analyzing bubble sort algorithms and calculating the probability of success for conditional statements.
  • Another participant suggests sharing the algorithm and progress made, indicating that they cannot perform the analysis but can provide guidance.
  • Several implementations of bubble sort are provided, including variations with memory management and early stopping, highlighting different approaches to the algorithm.
  • A participant proposes using counters to track how often the if statement is triggered during sorting, suggesting that the data arrangement affects the frequency of successful conditionals.
  • Another participant mentions that calculating the big-O notation could be relevant, discussing best, worst, and average case scenarios for the bubble sort algorithm.
  • There is a discussion about how the arrangement of input data influences the execution of conditionals, with examples provided for sorted and reverse-sorted data.

Areas of Agreement / Disagreement

Participants express various approaches to analyzing the bubble sort algorithm, but no consensus is reached on a specific method for calculating the probabilities of success for the conditional statements. Multiple competing views and methods remain present in the discussion.

Contextual Notes

Participants have not resolved how to calculate the probabilities of success for the conditional statements, and the discussion includes assumptions about data arrangements affecting the outcomes of the algorithm.

kadaj6
Messages
31
Reaction score
0
Hello,

I need to analyze some bubble sort algorithm and calculate the probability of each conditional statements(if,for,while,ect...) be successful. I can post the algorithms if you need to see them.

Thanks in advance
 
Physics news on Phys.org
We can't do this work for you but we could suggest how you might get the answers you need.

So show the algorithm and show how far you've gotten and what programming language you are using.
 
function = bubblesortWMemSe(X)
% Bubble sort implementation with memory and Stop Early
len = length(X);
S=X;
% t0=tic;
sorted = false;
last=1;
while (~sorted)
sorted = true;

for i=last:len-1
if S(i) > S(i+1)
tmp = S(i);
S(i) = S(i+1);
S(i+1) = tmp;
sorted = false;
last=i;
break
end
end
end
% t1=toc;
% runtime = t0-t1;





function = bubblesortWMem(X)
% Bubble sort implementation with memory
len = length(X);
S=X;
% t0=tic;
sorted = false;
last=1;
while (~sorted)
sorted = true;

for i=last:len-1
if S(i) > S(i+1)
tmp = S(i);
S(i) = S(i+1);
S(i+1) = tmp;
sorted = false;
last=i;
end
end
end
% t1=toc;
% runtime = t0-t1;




function = bubblesortSE(X)
% Bubble sort implementation with Stop Early
len = length(X);
S=X;
% t0=tic;
sorted = false;
while (~sorted)
sorted = true;
for i=1:len-1
if S(i) > S(i+1)
tmp = S(i);
S(i) = S(i+1);
S(i+1) = tmp;
sorted = false;
break
end
end
end
% t1=toc;
% runtime = t0-t1;



function = bubblesort(X)
% Bubble sort implementation
len = length(X);
S=X;
% t0=tic;
sorted = false;
while (~sorted)
sorted = true;
for i=1:len-1
if S(i) > S(i+1)
tmp = S(i);
S(i) = S(i+1);
S(i+1) = tmp;
sorted = false;
end
end
end
% t1=toc;
% runtime = t0-t1;





i made a table with the amount of comparison ans assignments for each one, now i need the probability of each while,if, and for to be successful. I do not know how to do it.
 
reformatting for readability using [ CODE ] [ /CODE ] tags (Mod: omit extra spaces)

kadaj6 said:
Code:
function [S] = bubblesortWMemSe(X)
% Bubble sort implementation with memory and Stop Early
len = length(X);
S=X;
% t0=tic;
sorted = false;
last=1;
while (~sorted)
    sorted = true;
    
    for i=last:len-1
        if S(i) > S(i+1)
            tmp = S(i);
            S(i) = S(i+1);
            S(i+1) = tmp;
            sorted = false;
            last=i;
            break
        end
    end
end
% t1=toc;
% runtime = t0-t1;function [S] = bubblesortWMem(X)
% Bubble sort implementation with memory
len = length(X);
S=X;
% t0=tic;
sorted = false;
last=1;
while (~sorted)
    sorted = true;
    
    for i=last:len-1
        if S(i) > S(i+1)
            tmp = S(i);
            S(i) = S(i+1);
            S(i+1) = tmp;
            sorted = false;
            last=i;
        end
    end
end
% t1=toc;
% runtime = t0-t1;

function [S] = bubblesortSE(X)
% Bubble sort implementation with Stop Early
len = length(X);
S=X;
% t0=tic;
sorted = false;
while (~sorted)
    sorted = true;
    for i=1:len-1
        if S(i) > S(i+1)
            tmp = S(i);
            S(i) = S(i+1);
            S(i+1) = tmp;
            sorted = false;
            break
        end
    end
end
% t1=toc;
% runtime = t0-t1;
function [S] = bubblesort(X)
% Bubble sort implementation
len = length(X);
S=X;
% t0=tic;
sorted = false;
while (~sorted)
    sorted = true;
    for i=1:len-1
        if S(i) > S(i+1)
            tmp = S(i);
            S(i) = S(i+1);
            S(i+1) = tmp;
            sorted = false;
        end
    end
end
% t1=toc;
% runtime = t0-t1;

i made a table with the amount of comparison ans assignments for each one, now i need the probability of each while,if, and for to be successful. I do not know how to do it.
 
Last edited by a moderator:
Im not sure how to do this but I'd probably look at the if and think about my data

say I am sorting numbers 1 thru 5 but the are listed 5 thru 1

then your if will fire every time on the first pass on the second pass it depends.

now say I'm sorting 1 thru 5 but they are in order

then your if will never fire

Do you have some fixed data?

Another approach would be to insert counters in your code for each time the IF fired and for how many passes you make until the end is reached then print out the two numbers during each pass and at the end.
 
Sounds like someone wants you to basically calculate the O() (big-O) notation for your sort. We will take a look at the last one, the straight bubble sort.

Code:
function [S] = bubblesort(X)
% Bubble sort implementation
len = length(X);
S=X;
% t0=tic;
sorted = false;
while (~sorted)
  sorted = true;
  for i=1:len-1
    if S(i) > S(i+1)
      tmp = S(i);
      S(i) = S(i+1);
      S(i+1) = tmp;
      sorted = false;
    end
  end
end
% t1=toc;
% runtime = t0-t1;

You're going to have two answers, though generally we're only ever interested in the worst case.

In the best case, X is given to the function presorted. If this is the case, then your if statement is never going to be true. How many times then will it be executed? Wil sorted ever be set back to false after you set it to true?

In the worst case, X is given in reverse order. When that happens, how many items need to be moved, and how many places do they need to be moved? After 1 iteration how many items will be in the right location? After 2? After n?

A third answer is the average case, or random case, which for functions like bubblesort, is much closer to the worst case than the best case.
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
5K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 25 ·
Replies
25
Views
4K
  • · Replies 22 ·
Replies
22
Views
1K
  • · Replies 12 ·
Replies
12
Views
4K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 17 ·
Replies
17
Views
5K
  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 1 ·
Replies
1
Views
2K
Replies
33
Views
4K