Ⅰ 怎麼實現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]
*/
//故此 初步想法應是通過反向循環,即先循環列,在循環行來實現。
}