Ⅰ 怎么实现List中两个元素的交换
好 我给你假设是个Class类的集合 好吧List<Class> list = new List<Class>();Class c1 = new Class("1年级1班");Class c2 = new Class("5年级4班");list.Add(c1);list.Add(c2);//交换元素Class temp = list[0];//定义临时变量list.RemoveAt(0);//删除第一个,后一个元素自动往前补list.Add(temp);//交换完成
Ⅱ 如何交换两个数组的元素,用指针
1、首先我们打开软件,新建一个 两个元素交换 项目。
Ⅲ 数据结构数组交换顺序,正在前负在后,交换过程为什么是A[j—]=x为什么是j- -
这个算法就是一趟快速排序。
内循环的第一个while就是从左往右找到第一个负数,i是其下标。
内循环的第二个while就是从右往左找到第一个正数,j是其下标。
然后交换A[i]与A[j],同时i加1,j减1,因为根据本算法下标0-i都已是正数,而下标j-n-1都已是负数。
而当外循环执行到i等于j时,正在前负在后的需求就实现了。
Ⅳ 汇编用堆栈实现两数交换
在数据结构中,严格来讲,堆和栈是有区别的。堆的操作规则是:先入先出、后入后出;栈的操作规则是:先入后出、后入先出。
数据结构中的栈,通常称作:堆栈。所以,指令序列
PUSH BUF1
PUSH BUF2
POP BUF1
POP BUF2
能够实现两个字型存储单元BUF1、BUF2的数据交换。
Ⅳ c语言求数组元素交换次序
假定数据长n,输入一个整数m,
1、使数组的后n-m个元素移到前边,前m-1个元素在数组中从最后位置倒序排列
#include
"stdio.h"
main()
{
int
i,n,m,t,j;
int
d[200];
printf("\n输入n的值(n<200):");
scanf("%d",&n);
for(i=0;i<n;i++)d[i]=i;
printf("\n输入m的值(m<200):");
scanf("%d",&m);
printf("\n输出调整前的数据:\n");
for(i=0;i<n;i++)printf("%d
",d[i];
//调整程序开始
for(i=0;i<m;i++)
{//n-m个数前移了
t=d[0];
for(j=1;j<n;j++)d[j-1]=d[j];
d[n-1]=t;
}
for(i=0;i<m/2;i++)
{//倒序
t=d[n-1-i];
d[n-1-i]=d[m+i];
d[m+i=t;
}
printf("\n输出调整后的数据:\n");
for(i=0;i<n;i++)printf("%d
",d[i];
}
Ⅵ 数据结构:顺序表两部分元素互换问题
我有个办法,先将整个数组倒过来,再将a部分和b部分分别倒过来。
for(inti=0,j=m+n-1;i<j;i++,j--)
swap(sl[i],sl[j]);
for(inti=0,j=n-1;i<j;i++,j--)
swap(sl[i],sl[j]);
for(inti=n,j=m+n-1;i<j;i++,j--)
swap(sl[i],sl[j]);
Ⅶ 数据结构题:交换排序算法实现和比较,用C++实现
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<time.h>usingnamespacestd;
intbubble;
intquickCount;
intbetween(int*a,intlow,inthigh);
voidquick(inta[],intlow,inthigh)
{
intvalue;
if(low<high)
{
value=between(a,low,high);
quick(a,low,value-1);//左边
quick(a,value+1,high);//右边
}
}
intbetween(int*a,intlow,inthigh)
{
intvalue=a[low];//中间值`
while(low<high)
{
while(low<high&&a[high]>=value)
{
quickCount++;
high--;
}
a[low]=a[high];
while(low<high&&a[low]<=value)
{
low++;
quickCount++;
}
a[high]=a[low];
}
a[low]=value;
returnlow;
}
voidBbubble(inta[],intlength)
{
inti;
//少执行10次
for(intx=0;x<length;x++)
for(inty=x;y<length-1;y++)
{
bubble++;
if(a[x]>a[y+1])
{
i=a[x];
a[x]=a[y+1];
a[y+1]=i;
}
}
//多执行10次
/*for(intx=0;x<length;x++)
for(inty=x;y<length;y++)
{
bubble++;
if(a[x]>a[y])
{
i=a[x];
a[x]=a[y];
a[y]=i;
}
}*/
}
voidput(inta[],intlength)
{
for(inti=0;i<length;i++)
{
cout<<a[i]<<"";
}
cout<<endl;
}
intmain()
{
inta[10]={1,3,4,2,5,6,7,8,9,0};
intb[10]={1,3,4,2,5,6,7,8,9,0};
Bbubble(a,10);
quick(b,0,9);
put(a,10);
put(b,10);
cout<<"Bbubble"<<bubble <<endl;
cout<<"quick"<<quickCount<<endl;
return0;
}
Ⅷ C语言如何将二位字符串数组中的两个元素交换位置
#include<stdio.h>
#include<string.h>
voidmain(){chars[2][80]={"aaa","bbbb"},charbuf[80];
strcpy(buf,s[0]);strcpy(s[0],s[1]);strcpy(s[1],buf);//类似于整数变量交换值
printf("%s %s ",s[0],s[1]);
}
Ⅸ 数据结构的排序方法有哪些
冒泡排序,快速排序,堆排序。
Ⅹ C语言如何将二维数组中两个元素交换位置
可以让数组进行转置来实现,参考如下:
public class TestTransposition {
int col;
int row;
/**转换方法 将一个数组进行转置
* 原理很简单
*
* @param input
* @return
*/
public int[][] trans(int[][] input) {
int[][] output = null;
row = input.length;
if (row $amp;>amp;$nbsp;0) {
col = input[0].length;
}
output = new int[col][row];
for (int i = 0; i $amp; for (int j = 0; j $amp; output[j][i] = input[i][j];
}
}
return output;
}
public static void main(String[] args){
//若是需要得到转置数组,应该调用上面的转置方法
// int[][] in={{1,2,3},{3,4,5}};
// int[][] out=new TestTransposition().trans(in);
// for (int i = 0; i $amp; // for (int j = 0; j $amp; // System.out.print(out[i][j]);
// }
// System.out.println("");
// }
//若只是想输出得到效果 这应该是可以的
int[][] in={{1,2,3},{3,4,5}};
for(int i=0;i<in[0].length;i++){
for(int j=0;j<in.length;j++){
System.out.print(in[j][i]);
}
System.out.println("");
}
}
/*a[2][3]---->a[3][2]
* a[0][0]---->a[0][0]
* a[0][1]---->a[1][0]
* a[0][2]----->a[2][0]
* a[1][0]---->a[0][1]
* a[1][1]---->a[1][1]
* a[1][2]----->a[2][1]
*/
//故此 初步想法应是通过反向循环,即先循环列,在循环行来实现。
}