從待排序的n個資料中,每一趟在n-i+1個元素中選擇值最小的元素作為有序序列中的第i個元素,從而達到排序的目的。簡單說就是:第一趟:在n個元素中選擇最小的元素與待排序數列的第乙個元素交換第二趟:在第2~n個元素中選擇最小的元素與待排序數列的第二個元素交換第三趟:在第3~n個元素中選擇最小的元素與待排序數列的第三個元素交換1、可以發現n個元素共需要進行n-1趟排序就可完成,因為前n-1個元素確定好位置之後,最後乙個自然而然就確定好了位置2、當選擇出了最小的元素之後,若發現其就已經處於將要放置的位置時,則可以不用交換
//待排序陣列
int arr = ;
//記錄最小元素
int min;
//記錄最小元素的下標
int index;
/************===第一趟排序***************
* 從第1個 ~ 第5個元素中選出最小的進行交換
*///假設第1個元素是最小的
min = arr[0];
index = 0;
//從第2個元素開始遍歷
for (int j = 1; j < arr.length; j++)
}//開始交換,將最小的元素放置到第1個位置
arr[index] = arr[0];
arr[0] = min;
/*****************第二趟排序***************==
* 從第2個 ~ 第5個元素中選出最小的進行交換(因為第乙個元素已經確定了)
*///假設第2個元素是最小的
min = arr[1];
index = 1;
//從第3個元素開始遍歷
for (int j = 2; j < arr.length; j++)
}//開始交換,將最小的元素放置到第2個位置
arr[index] = arr[1];
arr[1] = min;
/*****************第三趟排序***************==
* 從第3個 ~ 第5個元素中選出最小的進行交換(因為第1,2個元素已經確定了)
*///假設第3個元素是最小的
min = arr[2];
index = 2;
//從第4個元素開始遍歷
for (int j = 3; j < arr.length; j++)
}//開始交換,將最小的元素放置到第3個位置
arr[index] = arr[2];
arr[2] = min;
/*****************第四趟排序***************==
* 從第4個 ~ 第5個元素中選出最小的進行交換(因為第1,2,3個元素已經確定了)
*///假設第4個元素是最小的
min = arr[3];
index = 3;
for (int j = 4; j < arr.length; j++)
}//交換
arr[index] = arr[3];
arr[3] = min;
//每次從當前位置到最後位置之間選擇出最小的元素,放到當前的位置
for (int i = 0; i < arr.length - 1; i++)
}//交換
arr[index] = arr[i];
arr[i] = min;
}
在上邊的小結中我們指出了,當選擇出了最小的元素之後,若發現其就已經處於將要放置的位置時,則可以不用交換,因此**優化如下:歐了,**中注釋部分解釋的應該挺詳細的了,我是小k,勇敢做自己,做最好的自己=。=//每次從當前位置到最後位置之間選擇出最小的元素,放到當前的位置
for (int i = 0; i < arr.length - 1; i++)
}//交換
//如果要交換的就是當前的元素,則不用交換
if (index != i)
史上最通俗易懂git簡易指南
助你開始使用 git 的簡易指南,本文 羅傑 杜德勒 感謝 tfnico,fhd and namics 其他語言 english,deutsch,espa ol,fran ais,italiano,nederlands,portugu s,t rk e,日本語,如有紕漏,請到 github 填報 建...
字典排序演算法(通俗易懂)
我們先看乙個例子。示例 1 2 3的全排列如下 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 我們這裡是通過字典序法找出來的。那麼什麼是字典序法呢?從上面的全排列也可以看出來了,從左往右依次增大,對這就是字典序法。可是如何用演算法來實現字典序法全排列呢?你主要看紅色字型部分...
最通俗易懂的p value講解
這個問題,曾一度讓我懷疑我根本都沒有學懂知識,只是像規則一樣記住然後胡亂使用而已。此番記錄就當再次考驗我是否真正理解到p value的含義。p value,代表在原假設條件下,實驗事件可能發生的概率。舉例說明 拋一枚硬幣,正面朝上和反面朝上的概率是一樣的,各50 但這是有前提條件的,即硬幣是均勻的 ...