冒泡排序
冒泡排序涉及到雙循環(huán)址貌,外層循環(huán)控制趟數(shù)肛真,內(nèi)層循環(huán)控
制比較次數(shù)。
1、比較相鄰的元素代兵。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)镀裤。(大的放在后面)
2陵究、對(duì)每一對(duì)相鄰元素作同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)摸航。在這一點(diǎn)制跟,最后的元素應(yīng)該會(huì)是最大的數(shù)。
3酱虎、針對(duì)所有的元素重復(fù)以上的步驟雨膨,除了最后一個(gè)。(后面沒有元素了)
4读串、持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟聊记,直到?jīng)]有任何一對(duì)數(shù)字需要比較。
for(int i=0;i<nums.length-1;i++)
{
for(int j=0;j<nums[j].length-1-i;j++)
{
if(nums[j]>nums[j+1])
{
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;//將后一位的數(shù)移到前一位
????????}
????}
}
選擇排序
int min;//來存儲(chǔ) 較后的元素的最小值
int minindex;//來記錄最小值的下標(biāo)
for(int i = 0; i < a.Length - 1; i++)
{
min = a[i];
minindex = i;
for(int j = i + 1; j < a.Length; j++){
if ( a [j] < min)
{
//記錄最小值和其所對(duì)應(yīng)的下標(biāo)
min = a[j];
minindex = j;
????}
}
//交換值
a[minindex] = a[i];
a[i] = min;
}
二分查找
while(low <= high){//低位大于高位 循環(huán)失敗
//mid代表中間索引,不能放到while循環(huán)的外面
int mid = (low + high) / 2;
if(a[mid] == key)
{
Console.WriteLine("find key,index="+ mid);
return mid;
}
//如果中間的數(shù)大于要查找的數(shù),把后面一半數(shù)組去掉
else if(a[mid] > key)
{
high=mid-1;
}
}
else//小于要查找的數(shù)恢暖,把前面的一般去掉
{
low =min+1;
}
}
foreach遍歷
C#的foreach循環(huán)語句用于對(duì)數(shù)組排监、字符串及集合類型foreach循環(huán)語句格式:
foreach(迭代類型 迭代變量名 in 數(shù)組名)
{
//foreach循環(huán)語句循環(huán)體
}
例子:
int[] arr={1,2,3,4,5};
foreach(int x in arr){
? ? console.writeline(x);
}
string[] arrstr={"w","a","s","d","e","r"};
foreach(string n in arrstr){
console.writeline(n);
}