Alternative to the sort function

7 次查看(过去 30 天)
Looking for an alternative way to sort values in either decending or acsending order without using the sort function
  2 个评论
Walter Roberson
Walter Roberson 2022-5-3
Why? Your reason for not using sort() will influence the recommendations.
Charles Perkins
Charles Perkins 2022-5-3
I am in a beginner programming class (only a couple weeks in) one of the homework tasks asks to create a program that sorts user inputted numbers in ascending order without the sort function. I am struggling with this.

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2022-5-3
You would have to adapt it slightly to give a choice of ascending or descending, and you would have to adapt for non-vectors.
  7 个评论
Charles Perkins
Charles Perkins 2022-5-7
Mate you are a legend, thank you heaps. This is what I ended up with, not sure if it was quite what you were getting at but definitely based off your suggestions.
clc;
clear;
count = 0;
values = [] ;
while true
value = input('Input numbers to be arranged') ;
if value <= 0
break;
end
count= count +1
values(count) = value;
end
disp('Converting input into ascending order ')
% The vector of numbers
disp('The input numbers to be arranged:')
A=[values];
disp(A)
% Number of entries, n
n=length(A);
% making (n-1) passes
for j=1:1:n-1
% comparing each number with the next and swapping
for i=1:1:n-1
if A(i)>A(i+1);
% temp is a variable where the numbers are kept
% temporarily for the switch
temp=A(i);
A(i)=A(i+1);
A(i+1)=temp;
end
end
end
disp(' ')
disp ('The ascending matrix is')
disp(A)
Steven Lord
Steven Lord 2022-5-7
One suggestion that will eliminate the need for your count variable: the end function when used as an index refers to the position of the last element / row / column / etc. in an array. You can use this in assignment or referencing statements, including using it in some simple mathematical expressions. Let's start off with an empty array x.
x = []
x = []
We can assign to an element one past the end to make the vector longer:
x(end+1) = 1
x = 1
We can do that again.
x(end+1) = 3
x = 1×2
1 3
Let's reset the last value.
x(end) = 42
x = 1×2
1 42
In this next statement, x has 2 elements so end+2 is 4. Therefore the next command sets x(4) to 10 with x(3) filling in with the default value of 0.
x(end+2) = 10
x = 1×4
1 42 0 10
We don't have to add to end, we could also subtract. x has 4 elements so end-3 is 1 and y is x(1).
y = x(end-3)
y = 1

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by