C/C++语言重温------排序之插入排序、冒泡排序
#include<iostream>
#include<algorithm>
using namespace std;
#define GET_ARRAY_LEN(array,length) {length = sizeof(array) / sizeof(array[0]);}
template <typename T, int N>
int getSize(T(&input)[N]) {
return sizeof(input) / sizeof(T);
}
int arr_length = 0;
void display_arr(int *arr)
{
for (int i = 0; i < arr_length; i++)
{
cout << "arr[" << i << "]:" << arr[i] << endl;
}
}
void insert_sort(int *arr)
{
for (int i = 1, j, current; i < arr_length; i++)
{
current = arr[i];
for (j = i - 1; j >= 0 && (current < arr[j]); j--)
{
arr[j + 1] = arr[j];
}
arr[j + 1] = current;
}
}
void bubble_sort(int *arr)
{
bool hasChange = true;
for (int i = 0; i < arr_length; i++)
{
hasChange = false;
for (int j = 0; j < arr_length - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
hasChange = true;
swap(arr[j], arr[j + 1]);
}
}
if (hasChange != true)
{
break;
}
}
}
int main(int argc, char const *argv[])
{
int arr[] = { 5, 6, 1, 9, 2, 4, 3, 7, 10, 8 };
GET_ARRAY_LEN(arr, arr_length);
display_arr(arr);
insert_sort(arr);
display_arr(arr);
return 0;
}