冒泡排序
冒泡排序算法又稱交換排序算法,是從觀察水中氣泡變化構思而成,原理是從第一個元素開始比較相鄰元素的大小,若大小順序有誤,則對調後再進行下一個元素的比較,就彷彿氣泡逐漸從水底逐漸冒升到水面同樣。如此掃描一次以後就能夠確保最後一個元素位於正確的位置。接着再逐步進行第二次掃描,直到完成全部元素的排序關係爲止。
Python代碼:
import random
#構造數據
data = list()
for i in range(10):
data.append(random.randint(0, 100))
#打印數據
def show(array, lens):
for k in range(lens):
print("%3d" % array[k], end='')
print()
print("原始數據: ", end='')
show(data, 10)
#排序算法
for m in range(10 - 1):
for n in range(10 - m - 1):
if data[n] > data[n + 1]:
data[n], data[n + 1] = data[n + 1], data[n]
print("第%d次冒泡: " % (m + 1), end='')
show(data, 10)
print("排序結果: ", end='')
show(data, 10)
C++代碼:
int * Bubble_Sort(int array[], int len)
{
if (array == NULL)
{
return NULL;
}
int temp = 0;
for(int i = 0; i < len - 1; i++)
{
for(int j = 0; j < len - i - 1; j++)
{
if(array[j] < array[j + 1])
{
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
選擇排序
選擇排序算法算是枚舉法的應用,就是反覆從未排序的數列中取出最小的元素,放到對應的位置。例如一開始在全部數據中挑選出最小項放在第一個位置(假設從小到大排列),再從第二項纔是挑選一個最小項放在第2個位置,以此重複,直到完成排序
Python代碼
import random
data = list()
for i in range(20):
data.append(random.randint(0, 100))
def show_array(array, lens):
for m in range(lens):
print("%4d" % (array[m]), end='')
print()
print("原始數據: ", end='')
show_array(data, 20)
for k in range(20 - 1):
min_num = k
for n in range(k+1, 20):
if data[n] < data[min_num]:
min_num = n
if min_num != k:
data[k], data[min_num] = data[min_num], data[k]
print("第%2d次交換:" % (k+1), end='')
show_array(data, 20)
print("順序數據: ", end='')
show_array(data, 20)
C++代碼:
int * Select_sort(int array[], int lens)
{
if (array == NULL)
{
return NULL;
}
for(int i = 0; i < lens - 1; i++)
{
int min = i;
for(int j = i + 1; j < lens; j++)
{
if (array[j] < array[min])
{
min = j;
}
}
if (min != i)
{
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
}
return array;
}