聊城网站建设聊城,携程网站模板,微商各种软件拿码渠道,怎么自己做企业网站直接插入排序
//直接插入排序
void InsertSortingDirectly(int* nums,int numsSize){int j0;for(int i1;inumsSize-1;i){//定义一个中间变量保存当前要插入的值int tempnums[i];//在前面已排好序的序列中#xff0c;找到合适的位置插入for(ji-1;j0;j--){if(nums[j]0;for(int i1;inumsSize-1;i){//定义一个中间变量保存当前要插入的值int tempnums[i];//在前面已排好序的序列中找到合适的位置插入for(ji-1;j0;j--){if(nums[j]temp){//让该元素往后移nums[j1]nums[j];}else{break;}}nums[j1]temp;}
}
折半插入排序
//折半插入排序
void BinaryInsertionSort(int* nums,int numsSize){for(int i1;inumsSize-1;i){int tempnums[i];int left0;int righti-1;//二分查找的过程其实也就是在前面已排好序的序列中运用二分查找的方法找到相应位置插入while(leftright){int mid(leftright)/2;if(nums[mid]temp){leftmid-1;}else if(nums[mid]temp){rightmid1;}}//已经找到了相应位置就把这个位置之后的元素包括这个位置依次向后移动。for(int ji-1;jleft;j--){nums[j1]nums[j];}nums[left]temp;}
}
冒泡排序
//冒泡排序
void BubbleSort(int* nums,int numsSize){//外层循环表示的是排序次数仅需排序n-1次for(int i0;inums-1;i){for(int j0;jnumsSize-i-1;j){//如果相邻元素中前面大于后面就要进行交换if(nums[j]nums[j1]){int tempnums[j1];nums[j1]nums[j];nums[j]temp;}}}
}
快速排序
//快速排序
//划分操作
int huafen(int*nums,int left,int right){//以最左边的元素为基准元素int midnums[left];while(leftright){//从右边开始寻找比基准元素小或等于的元素while(nums[right]midleftright){right--;}nums[left]nums[right];while(nums[left]midleftright){left;}nums[right]nums[left];}nums[left]mid;return left;
}//递归排序
void Qsort(int*nums,int left,int right){if(leftright){return;}int midhuafen(nums,left,right);//左半部分快排Qsort(nums,left,mid-1);//右半部分快排Qsort(nums,mid1,right);
} 简单选择排序
//简单选择排序
void SelectSort(int* nums,int numsSize){//仅需进行n-1趟for(int i0;inumsSize-1;i){int mini;//这里是用打擂台的方法从i1到n中选出最小值for(int ji1;jnumsSize-1;j){if(nums[min]nums[j]){minj;}}//如果最小值变了那么久进行换位置把最小的放在第一个if(min!i){int tempnums[i];nums[i]nums[min];nums[min]temp;}}
}
归并排序