学习数据结构应用和算法的第一步,往往是从学习几个最基础的排序算法开始的。
废话少说,开始整理第一个排序算法:插入排序。
插入排序算法过程:
对于一个数组,划分为两部分,一部分是待排序,一部分是已经排好序。操作过程就是依次将待排序部分的每一个记录(数据)插入到已经排好序的序列中,直至待排序序列没有记录。算法分析:
直接插入排序是稳定的,时间复杂度为o(n^2)。
上代码,这是插入排序方法的代码:
//插入排序
/*依次将待排序列中的每
*一个记录插入到一个已经排好的序列中。
*/
void insertSort(int num[],int n)
{
//判断数组是否为空
if(n==0)
{
cout <<"数组为空,请重新输入~";
return;
}
//进行排序
int i,j,temp;
for(i=1;i < n;i++)
{
temp = num[i];
for(j = i - 1;j >= 0&& num[j] > temp;j--)
num[j+1] = num[j];
num[j+1] = temp;
for (int k = 0; k < n; k++)
cout << num[k] << " ";
cout << endl;
}
}
这是插入排序算法的应用:
//插入排序
/*依次将待排序列中的每
*一个记录插入到一个已经排好的序列中。
*/
#include<iostream>
using namespace std;
void insertSort(int num[],int n)
{
//判断数组是否为空
if(n==0)
{
cout <<"数组为空,请重新输入~";
return;
}
//进行排序
int i,j,temp;
int times = 0; //表示循环的次数
for(i=1; i < n; i++)
{
//打印排列过程中的顺序
cout<<"第 "<<times<<" 次: ";
for (int k = 0; k < n; k++)
{
cout << num[k] << " ";
}
cout << endl;
//显示循环的次数
++times;
//开始排列
temp = num[i];
for(j = i - 1; j >= 0&& num[j] > temp; j--)
num[j+1] = num[j];
num[j+1] = temp;
}
//打印最后一次的顺序
cout<<"第 "<<times<<" 次: ";
for (int k = 0; k < n; k++)
{
cout << num[k] << " ";
}
}
int main()
{
int a[] = {4,2,0,6,5,11,8,3};
insertSort(a, 7);
}
应用得到的结果截屏为: