最近刚好学习了数据结构,自己试了一下插入排序,全ac,可以帮我看一下不足之处
查看原帖
最近刚好学习了数据结构,自己试了一下插入排序,全ac,可以帮我看一下不足之处
881577
zx142407789楼主2023/3/5 16:12

欢迎讨论

#include<iostream>
#define n 3
using namespace std;
int* InsertSort(int* ar, int N);
int main() {
	int num[n];
	for (int i = 0; i < n; i++) {
		cin >> num[i];
	}
	int * out = InsertSort(num, n);
	for (int i = 0; i < n; i++) {
		cout<<out[i]<<" ";
	}
	return 0;
}
int* InsertSort(int* ar, int m) {//函数定义
	int N = m + 1;
	int* Ar = new int[N];//创建辅助数组
	Ar[0] = 0;//0号位置用作哨兵
	for (int i = 1; i < N; ++i) {//读取输入到辅助数组
		Ar[i] = ar[i - 1];
	}
	//插入排序算法
	for (int i = 2; i < N; i++) {//从第二个元素开始插入
		Ar[0] = Ar[i];//待插入元素设为哨兵
		for (int j = i - 1; j > 0; j--) {//从待插入元素的上一元素开始比较
			if (Ar[j] > Ar[0]) {//前面的元素大于哨兵则向后移动
				Ar[j + 1] = Ar[j];
				if (j == 1) {
					Ar[j] = Ar[0];
				}
			}//小于哨兵则插入该元素位置
			else {
				Ar[j + 1] = Ar[0];
				break;
			}
		}
	}
	return Ar+1;//从哨兵后返回数据
}

2023/3/5 16:12
加载中...