冒泡、插入、选择三种排序已经说过。本文上的是亲测可行的C++代码,供大家参考。
冒泡
void bubbleSort(int arr[],int m_num)
{
cout << "bubbleSort******************" << endl;
if (arr == NULL || m_num < 2) { return; }
// 右到左 少操作一次
for (int e = m_num - 1; e > 0; e--)//操作次数 所以(0,len-1]
{
for (int i=0;i<e;i++)//下标 因为e-1了
{
if (arr[i] > arr[i + 1]) { swap(arr, i, i + 1); }
}
}
for (int i = 0; i < m_num; i++)
{
cout << arr[i] << endl;
}
}
插入
void insertSort(int arr[], int m_num)
{
cout << "insertSort******************" << endl;
if (arr == NULL || m_num < 2) { return; }
//从左到右 先搞定0位置
for (int i =1; i <m_num; i++)//操作次数 所以[1,len]
{
for (int j = i-1; j >=0; j--)//j 是下标 0-1 有序 2位置往里面插入
{
if (arr[j] > arr[j + 1]) { swap(arr, j, j+ 1); }
}
}
for (int i = 0; i < m_num; i++)
{
cout << arr[i] << endl;
}
}
选择
void selectionSort(int arr[], int m_num)
{
cout << "selectionSort******************" << endl;
if (arr == NULL || m_num < 2) { return; }
//从左到右 先搞定0位置
for (int i =0; i <m_num-1; i++)//下标 所以(0,len-1]
{
int m_minIndex = i;
for (int j = i+1; j < m_num; j++)//操作次数所以[i+1,mun)
{
m_minIndex = (arr[j] < arr[m_minIndex]) ? j : m_minIndex;
}
swap(arr, i, m_minIndex);
}
for (int i = 0; i < m_num; i++)
{
cout << arr[i] << endl;
}
}