Python Forum
Sort without using sort - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Homework (https://python-forum.io/forum-9.html)
+--- Thread: Sort without using sort (/thread-5123.html)



Sort without using sort - qhnguyen - Sep-20-2017

Text file:
425 300 1
50 10 15
6 9 3
2 12 6
70 69 71
1 2 3

My code:
#Project#1-Quyen Nguyen
file="Project1.txt"
infile=open(file)

count=0
for line in infile:
strip_line=line.rstrip()
count=count+1
strip_line=line.split()
value0=strip_line[0]
value1=strip_line[1]
value2=strip_line[2]
numval0=int(value0,base=10)
numval1=int(value1,base=10)
numval2=int(value2,base=10)
print("line#,numval0,numval1,numval2)

I just take the class for 2 week and I am stuck with my HW. My question is how can i sort it in numerical order without using sort.


RE: Sort without using sort - wavic - Sep-20-2017

You could list.pop() min(list_object) or max(list_object) to get the lowest or higher value to create a sorted list.


RE: Sort without using sort - ichabod801 - Sep-20-2017

If you haven't learned pop yet, another way to do it is:
  • calculate the min
  • remove the min
  • append the min to a new list.
The bold words are the functions/method you would use.


RE: Sort without using sort - qhnguyen - Sep-21-2017

file="Project1.txt"
infile=open(file)

line1=infile.readline()
data1=line1.split(" ")
numval0_line1=int(data1[0],base=10)
numval1_line1=int(data1[1],base=10)
numval2_line1=int(data1[2],base=10)
#Set up count
count=0
#Working on line1:
list1=[numval0_line1,numval1_line1,numval2_line1]
min1=min(list1)
max1=max(list1)
mid1=sum(list1)-max1-min1
while count<1:
count=count+1
print("line#",count,"-","Lowest to Highest:",min1,",",mid1,",",max1)

line2=infile.readline()
data2=line2.split(" ")
numval0_line2=int(data2[0],base=10)
numval1_line2=int(data2[1],base=10)
numval2_line2=int(data2[2],base=10)
list2=[numval0_line2,numval1_line2,numval2_line2]
max2=max(list2)
min2=min(list2)
mid2=sum(list2)-max2-min2
while count<2:
count=count+1
print("line#",count,"-","Lowest to Highest:",min2,",",mid2,",", max2)

line3=infile.readline()
data3=line3.split(" ")
numval0_line3=int(data3[0],base=10)
numval1_line3=int(data3[1],base=10)
numval2_line3=int(data3[2],base=10)
list3=[numval0_line3,numval1_line3,numval2_line3]
max3=max(list3)
min3=min(list3)
mid3=sum(list3)-max3-min3
while count<3:
count=count+1
print("line#",count,"-","Lowest to Highest:",min3,",",mid3,",",max3)

line4=infile.readline()
data4=line4.split(" ")
numval0_line4=int(data4[0],base=10)
numval1_line4=int(data4[1],base=10)
numval2_line4=int(data4[2],base=10)
list4=[numval0_line4,numval1_line4,numval2_line4]
max4=max(list4)
min4=min(list4)
mid4=sum(list4)-max4-min4
while count<4:
count=count+1
print("line#",count,"-","Lowest to Highest:",min4,",",mid4,",",max4)

line5=infile.readline()
data5=line5.split()
numval0_line5=int(data5[0],base=10)
numval1_line5=int(data5[1],base=10)
numval2_line5=int(data5[2],base=10)
list5=[numval0_line5,numval1_line5,numval2_line5]
max5=max(list5)
min5=min(list5)
mid5=sum(list5)-max5-min5
while count<5:
count=count+1
print("line#",count,"-","Lowest to Highest:",min5,",",mid5,",",max5)

line6=infile.readline()
data6=line6.split()
numval0_line6=int(data6[0],base=10)
numval1_line6=int(data6[1],base=10)
numval2_line6=int(data6[2],base=10)
list6=[numval0_line6,numval1_line6,numval2_line6]
max6=max(list6)
min6=min(list6)
mid6=sum(list6)-max6-min6
while count<6:
count=count+1
print("line#",count,"-","Lowest to Highest:",min6,",",mid6,",",max6)
I just finish the homework base on you guys idea. thank you alot
#END


RE: Sort without using sort - nilamo - Sep-21-2017

(Sep-21-2017, 02:31 AM)qhnguyen Wrote: numval0_line6=int(data6[0],base=10)

In most numbering systems currently in use in the world, base 10 is used.  Thus, it's the default for int().  So there's no need to pass it, you could just numval0_line6 = int(data6[0]).