一、冒泡排序
基本思路:大的向下沉小的向上浮,每次交换的数字都是相邻的。
#include <iostream>
#include <algorithm>
using namespace std;
const int N=10010;
int num[N];
int n;
void bubble_sort(int num[],int n)
{
for(int i=0;i<n;i++)
{
for(int j=n-1;j>=i;j--)
{
if(num[j]<num[j-1]) swap(num[j],num[j-1]);
}
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++) scanf("%d",&num[i]);
bubble_sort(num,n);
for(int i=0;i<n;i++) printf("%d ",num[i]);
}
def bubble(num):
n = len(num)
for i in range(n):
for j in range(n-i-1) :
if num[j]>num[j+1]:
num[j],num[j+1] = num[j+1],num[j]
print(num)
def main():
arr = input("numbers:")
num = [int(val) for val in arr.split()]
bubble(num)
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
main()
二、选择排序
从头至尾扫描,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。
#include <iostream>
#include <algorithm>
using namespace std;
const int N=10010;
int num[N],n;
void selec_sort(int num[],int n)
{
int min = INT_MAX;
for(int i=0;i<n;i++)
{
int k=i;
for(int j=k+1;j<n;j++)
{
if(num[j]<num[k]) k=j;
}
swap(num[k],num[i]);
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++) scanf("%d",&num[i]);
choose_sort(num,n);
for(int i=0;i<n;i++) printf("%d ",num[i]);
return 0;
}
三、插入排序
序列想成两个集合,排好序的和没排好的。
void insert_sort()
{
for (int i = 1; i < n; i ++ )
{
int x = a[i];
int j = i-1;
while (j >= 0 && x < a[j])
{
a[j+1] = a[j];
j -- ;
}
a[j+1] = x;
}
}