#include <iostream>
using namespace std;
void printArray(int *arr, int size)
{
for(int i=0; i<size; ++i)
{
cout<< arr[i]<< ' ';
}
cout<<endl;
}
void selectionSort(int *arr, int size)
{
for(int i=0; i<size; i++)
{
// 假设当前i为最小值,minIndex为其值索引
int minIndex = i;
for (int j=i+1; j<size; j++)
{
// 擂台法和i+1之后比较,取出最小的值
if (arr[minIndex] > arr[j])
minIndex = j;
}
// 交换本次最小的值,放到i位置。
// if语句为优化
if (i != minIndex)
swap(arr[i], arr[minIndex]);
}
}
void insertionSort(int *arr, int size)
{
// 插入排序的第一个循环从下标1开始
for(int i=1; i<size; i++)
{
// 保存i位置的元素,i指向无序表
int tmp = arr[i];
// 代表i之前的有序表
int j = i-1;
// 依次遍历无序表
for (; j>=0; j--)
{
if (arr[j] > tmp)
{
arr[j+1] = arr[j];
}else
{
break;
}
}
arr[j+1] = tmp;
}
}
void bubbleSort(int *arr, int size)
{
bool hasSorted = true;
for(int i=0; hasSorted; i++)
{
hasSorted = false;
// 依次遍历无序表
for (int j=size-1; j>i; j--)
{
if (arr[j] < arr[j-1])
{
swap(arr[j], arr[j-1]);
hasSorted = true;
}
}
printArray(arr, size);
}
}
int main()
{
int array[6] = {0, -22, 211, 120, 23, 120};
int size = sizeof (array) / sizeof (*array);
printArray(array, size);
// sort algo
// selectionSort(array, size);
// insertionSort(array, size);
// bubbleSort(array, size);
printArray(array, size);
return 0;
}
备份地址: 【O(n^2)排序 :选择、插入、冒泡】