程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 代碼演示C#中string和StingBuilder內存中的區別,

代碼演示C#中string和StingBuilder內存中的區別,

編輯:C#入門知識

代碼演示C#中string和StingBuilder內存中的區別,


關於 string和StringBuilder的區別參考MSDN。本文用程序演示它們在內存中的區別,及其因此其行為不同。

 

//Demo  string memory model

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            string a = "1234";

            string b = a;//a,and b point to the same address

            Console.WriteLine(a);

            Console.WriteLine(b);

 

            a = "5678";

            Console.WriteLine(a);

            Console.WriteLine(b);//That b's value is not changed means string's value cann't be changed


            Console.ReadKey();
        } 
            
    }
}

output:

1234

1234

5678;change a's value,b's value is not changed

1234

 

//Demo StringBuilder's memory model

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
  
            StringBuilder a = new StringBuilder("1234");
            StringBuilder b = new StringBuilder();
            b = a;
            a.Clear();
            a.Append("5678");
            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.ReadKey();
        }

        
    }
}

 

output:

5678

5678


C語言實現七種排序算法的 演示代碼

(1)“冒泡法”

冒泡法大家都較熟悉。其原理為從a[0]開始,依次將其和後面的元素比較,若a[0]>a[i],則交換它們,一直比較到a[n]。同理對a[1],a[2],...a[n-1]處理,即完成排序。下面列出其代碼:

void bubble(int *a,int n) /*定義兩個參數:數組首地址與數組大小*/

{

int i,j,temp;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++) /*注意循環的上下限*/

if(a[i]>a[j]) {

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

冒泡法原理簡單,但其缺點是交換次數多,效率低。

下面介紹一種源自冒泡法但更有效率的方法“選擇法”。

(2)“選擇法”

選擇法循環過程與冒泡法一致,它還定義了記號k=i,然後依次把a[k]同後面元素比較,若a[k]>a[j],則使k=j.最後看看k=i是否還成立,不成立則交換a[k],a[i],這樣就比冒泡法省下許多無用的交換,提高了效率。

void choise(int *a,int n)

{

int i,j,k,temp;

for(i=0;i<n-1;i++) {

k=i; /*給記號賦值*/

for(j=i+1;j<n;j++)

if(a[k]>a[j]) k=j; /*是k總是指向最小元素*/

if(i!=k) { /*當k!=i是才交換,否則a[i]即為最小*/

temp=a[i];

a[i]=a[k];

a[k]=temp;

}

}

}

選擇法比冒泡法效率更高,但說到高效率,非“快速法”莫屬,現在就讓我們來了解它。

(3)“快速法”

快速法定義了三個參數,(數組首地址*a,要排序數組起始元素下標i,要排序數組結束元素下標j). 它首先選一個數組元素(一般為a[(i+j)/2],即中間元素)作為參照,把比它小的元素放到它的左邊,比它大的放在右邊。然後運用遞歸,在將它左,右兩個子數組排序,最後完成整個數組的排序。下面分析其代碼:

void quick(int *a,int i,int j)

{

int m,n,temp;

int k;

m=i;

n=j;

k=a[(i+j)/2]; /*選取的參照*/

do {

while(a[m]<k&&m<j) m++; /* 從左到右找比k大的元素*/

while(a[n]>k&&n>i) n--; /* 從右到左找比k小的元素*/

if(m<=n) { /*若找到且滿足條件,則交換*/

temp=a[m];

a[m]=a[n];

a[n]=temp;

m++;

n--;

}

}while(m<=n);

if(m<j) quick(a,m,j); /*運用遞歸*/

if(n>i) quick(a,i,n);

}

(4)“插入法”

插入法是一種比較直觀的排序方法。它首先把數組頭兩個元素排好序,再依次把後面的元素插入適當的位置。把數組元素插完也就完成了排序。

void ins......余下全文>>
 

漢諾塔c語言動畫演示程序

各位實在是太摳了,樓主是想在圖形模式下運行漢諾塔的演示動畫吧,留個聯系方式我給你發源程序

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved