插入排序
#include <iostream>
#include <string.h>
using namespace std;
int* insertSort(int* arr,int len){ //插入排序算法
int* tempArr = (int*)malloc(sizeof(int) * len);
int pos = 0;
memcpy(tempArr,arr,sizeof(int));
for(int i = 1;i < len;i++){ //从i = 1开始
// cout << tempArr[i];
tempArr[i] = arr[i]; //先给数组第一个赋值,然后再进行后续比较
pos = i;
while(tempArr[pos] < tempArr[pos - 1]){ //当i-1 < i时一直进行交换
int temp = tempArr[pos];
tempArr[pos] = tempArr[pos - 1]; //插入部分有疑问?
tempArr[pos - 1] = temp;
pos--; //对比较的指针进行前移,否则只会移动一次
}
}
return tempArr;
}
int* selectSort(int* arr,int len){ //选择排序
int* tempArr = (int*)malloc(sizeof(int) * len);
memcpy(tempArr,arr,sizeof(int) * len);
for(int i = 0;i < len;i++){
for(int j = i + 1;j < len;j++){ //画图,每次j从i+1出发
if(tempArr[j] < tempArr[i]){ //若满足条件,交换?(应该筛选出最大值)
int temp = tempArr[j];
tempArr[j] = tempArr[i];
tempArr[i] = temp;
}
}
}
return tempArr;
}
void printArr(int* arr,int len){ //输出数组
for(int i = 0;i < len;i++){
cout << " " << arr[i];
}
}
int main()
{
int testArr[10] = {40,22,33,54,66,77,10,2,58,69};
// cout << sizeof(testArr) / 4;
int* resArr = (int*)malloc(sizeof(testArr));
int* res2Arr = (int*)malloc(sizeof(testArr));
resArr = insertSort(testArr,sizeof(testArr) / 4);
res2Arr = selectSort(testArr,sizeof(testArr) / 4);
printArr(resArr,sizeof(testArr) / 4);
cout << endl;
printArr(res2Arr,sizeof(testArr) / 4);
return 0;
}