当前位置:首页 / 文章测试 / C++插入排序

C++插入排序

开始打字练习

#include

using namespace std;

const int N = 1e4 + 5, M = 1e4 + 5;

int a[N];

int n;

void show()

{

for(int i = 1; i <= n; i++)

cout << a[i] << ' ';

}

void insertSort_1()

{

/*

for(int i = 2; i <= n; i++){

int t = a[i], j = i - 1;

while(j >= 1 && a[j] > t){ // j>=1 注意数组不要越界

a[j + 1] = a[j]; // 比t大的元素往后挪

j--;

}

a[j + 1] = t;

}

*/

a[0] = -0x3f3f3f3f; // 哨兵 足够小的数 内层循环可以不写j>=1

for(int i = 2; i <= n; i++){

int t = a[i], j = i - 1;

while(a[j] > t){

a[j + 1] = a[j]; // 比t大的元素往后挪

j--;

}

a[j + 1] = t;

}

}

void insertSort_2()

{

/*

for(int i = 2; i <= n; i++){

int j = i - 1;

while(j >= 1 && a[j] > a[j + 1]){ // j>=1 注意数组不要越界

swap(a[j], a[j + 1]); // 交换方式完成插入

j--;

}

}

*/

a[0] = -0x3f3f3f3f; // 哨兵 足够小的数 内层循环可以不写j>=1

for(int i = 2; i <= n; i++){

int j = i - 1;

while(a[j] > a[j + 1]){

swap(a[j], a[j + 1]);

j--;

}

}

}

int main()

{

cin >> n;

for(int i = 1; i <= n; i++)

cin >> a[i];

//insertSort_1();

insertSort_2();

show();

return 0;

}

声明:以上文章均为用户自行发布,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。