插入排序的变形

2024-06-15 13:38
文章标签 插入排序 变形

本文主要是介绍插入排序的变形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

思路:如果这里不考虑空间的复杂度,可以用O(n),但是为了节约空间,我们采用插入排序的方法处理这个问题。代码如下:

class Solution {
public://简单用插入排序的方法处理//交换数据
void Swap(vector<int>& array, int left, int right){int temp = array[left];array[left] = array[right];array[right] = temp;
}
void reOrderArray(vector<int> &array) {//判断边界条件if (array.size()<2)return;for (int i = 1; i != array.size(); ++i){//将array[i] 插入 前方数组for (int j = i; j > 0 && array[j] % 2 == 1 && array[j - 1] % 2 == 0; --j){Swap(array, j, j - 1);}}
}
};

这篇关于插入排序的变形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063611

相关文章

十大经典排序算法——插入排序与希尔排序(超详解)

一、插入排序 1.基本思想 直接插入排序是一种简单的插入排序法,基本思想是:把待排序的记录按其数值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。 2.直接插入排序 当插入第 end + 1 个元素时,前面的arr[0],arr[1],...  ,arr[end]已经排好序,此时用arr[end + 1]的值与arr[end],arr[end -

iNOC产品部-杨辉三角的变形(第二种方法也可以通过,测试数据太弱,n10000就会爆的)

// iNOC产品部-杨辉三角的变形(第二种方法也可以通过,测试数据太弱,n>10000就会爆的) #include<bits/stdc++.h>using namespace std;int F(int n,int k){if(k==1||k==2*n-1)return 1;if(k<1||k>2*n-1)return 0;return F(n-1,k)+F(n-1,k-1)+F(n-1

初级排序-选择排序、插入排序、希尔排序总结

一、选择排序 1.定义 首先,找到数组中最小的元素,其次将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。 2.代码实现 public static void sort(Comparable[] a) {int n = a.length;f

常见的8种排序(含代码):插入排序、冒泡排序、希尔排序、快速排序、简单选择排序、归并排序、堆排序、基数排序

时间复杂度O(n^2) 1、插入排序 (Insertion Sort)         从第一个元素开始,该元素可以认为已经被排序;取出下一个元素,在已经排序的元素序列中从后向前扫描;如果该元素(已排序)大于新元素,将该元素移到下一位置;重复步骤,直到找到已排序的元素小于或者等于新元素的位置;将新元素插入到该位置后。 void insertionSort(int arr[], int n)

Deformable Convolutional可变形卷积回顾

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶” 作者:Sik-Ho Tsang 编译:ronghuaiyang 导读 使用可变形卷积,可以提升Faster R-CNN和R-FCN在物体检测和分割上的性能。只要增加很少的计算量,就可以得到性能的提升,非常好的文章,值的一看。 (a) Conventional Convolution, (b) Deformable Convol

CSS--解决图片变形的方法

原文网址:CSS--解决图片变形的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍html文件中图片变形的解决方法。 问题描述 我们经常需要指定所有图片的大小,让它们排列起来时看起来更整齐。但是,如果我们指定了width和height,那么图片会被拉伸,会很难看。 比如: 从图中可以看到,指定大小后, 图片被拉伸了,很不好看。 代码如下: <html xml:lang="

Leetcode 147. 对链表进行插入排序 Leetcode 148. 排序链表

https://leetcode-cn.com/problems/insertion-sort-list/ https://leetcode-cn.com/problems/sort-list/ 插入排序-初版 复杂度如插入排序,最坏可能为O(n^2) /*** Definition for singly-linked list.* struct ListNode {* int

Java对象插入排序算法

之前的一篇是基本数据类型的插入排序!这篇是对象类型插入排序! 代码如下: class People {     private String country;     private String name;     private int age;     public People(String country,String name,int age){      this.countr

(直接)插入排序INSERT_SORT

一、伪代码 /*INSERT_SORT(A)*/for j = 2 to A.lengthkey = A[j]//Insert A[j] into the sorted sequence A[1..j-1].i = j-1while i>0 and A[i]>keyA[i+1] = A[i]i = i-1A[i+1] = key 二、算法描述 数组A[1..n]是一个包含n个元素

算法——排序之插入排序

新年之际我却发现排序中还缺少几个算法,那我就填上把。 插入排序:         就像在打牌时我们拿牌那样 拿完一张就查到手里的牌中,只要每次保持插入后是有序的那么知道最后出来的就会是有序的。 插入排序的每次都需要比较来确定牌插到哪里的,也就是说,需要从牌头比较到牌位。 这样时间复杂度会是O(n²)。虽然这样,但是这种排序算法简单易行适合于较小的数量级的排序,速度很快。 下面是我的代码: