#include?stdio.h
創(chuàng)新互聯(lián)公司主要從事成都做網站、成都網站制作、網頁設計、企業(yè)做網站、公司建網站等業(yè)務。立足成都服務長治,10多年網站建設經驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18982081108
#include?stdlib.h
#include?time.h
int?main(void)
{
int?a[10],i,j,tmp,b;
srand(time(NULL));
for(i=0;i10;i++)
a[i]=rand()%100;
for(i=0;i10;i++)
printf("%3d",a[i]);
printf("\n");
for(i=0;i9;i++)
{
tmp=i;
for(j=i+1;j10;j++)
?{
if(a[tmp]a[j])
tmp=j;
?}
if(i!=tmp)
{
b=a[tmp];
a[tmp]=a[i];
a[i]=b;
}
}
for(i=0;i10;i++)
printf("%3d",a[i]);
printf("\n");
return?0;
}
隨機產生數(shù)組中的元素, 更合理一些。 百科中有各種版本。
#include stdio.h
#include stdlib.h
#include time.h
#define MAXlen 100
void select_sort(int *x, int n) { //選擇排序
int i, j, min;
int t;
for (i = 0; i n - 1; i++) { // 要選擇的次數(shù):0~n-2共n-1次
min = i; // 假設當前下標為i的數(shù)最小,比較后再調整
for (j = i + 1; j n; j++) { //循環(huán)找出最小的數(shù)的下標是哪個
if (*(x + j) *(x + min)) {
min = j; // 如果后面的數(shù)比前面的小,則記下它的下標
}
}
if (min != i) { // 如果min在循環(huán)中改變了,就需要交換數(shù)據(jù)
t = *(x + i);
*(x + i) = *(x + min);
*(x + min) = t;
}
}
}
int main() {
int i;
int iArr[MAXlen];
srand((unsigned int)time(NULL));
printf("\n排序前:\n");
for(i = 0 ; i MAXlen ; i++) {
iArr[i] = (unsigned int)rand() % 1000;
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n");
select_sort(iArr,MAXlen);
printf("\n排序后:\n");
for(i = 0 ; i MAXlen ; i++) {
if(i % 10 == 0) printf("%\n");
printf("%5d",iArr[i]);
}
printf("\n\n");
return 0;
}
C語言將數(shù)組元素大小排序方法:
以下使用的是冒泡排序法實線數(shù)組從小到大排序。
思想:每次相鄰兩個數(shù)比較,若升序,則將大的數(shù)放到后面,一次循環(huán)過后,就會將最大的數(shù)放在最后。
10、2、3、4、5、6、9、8、7、1是輸入的待排序的數(shù)列,經過第一次排序,將最大的,10放在最后,第二次排序,將剩下的2、3、4、5、6、9、8、7、1進行冒泡,將當前最大的9放在倒數(shù)第二的位置,以此類推。
以下是具體代碼:
#include stdio.h
int main(){
int nums[10] = {10, 2, 3, 4, 5, 6, 9, 8, 7, 1};
int i, j, temp, isSorted;
//優(yōu)化算法:最多進行 n-1 輪比較
for(i=0; i10-1; i++){
isSorted = 1;? //假設剩下的元素已經排序好了
for(j=0; j10-1-i; j++){
if(nums[j] nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
isSorted = 0;? //一旦需要交換數(shù)組元素,就說明剩下的元素沒有排序好
}
}
if(isSorted) break; //如果沒有發(fā)生交換,說明剩下的元素已經排序好了
}
for(i=0; i10; i++){
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
擴展資料:
其他將數(shù)組從小到大排序的算法
以下使用的是選擇排序法實現(xiàn)數(shù)組從小到大排序。
思想:從第一個數(shù)開始,每次和后面剩余的數(shù)進行比較,若升序,則如果后邊的數(shù)比當前數(shù)字小,進行交換,和后面的所有的數(shù)比較、交換后,就會將當前的最小值放在當前的位置
輸入的序列為10、2、3、4、5、6、9、8、7、1進行一次排序后將最小的數(shù)放在了第一位(a[0]與它后面的所有數(shù)進行比較,若a[0]比后面的數(shù)大,進行交換),以此類推。
以下是具體代碼:
#include stdio.h
int main(void){
int a[1001];
int n,i,j,t;
scanf("%d",n);//n為要排序的數(shù)的個數(shù)
//輸入需要排序的數(shù)
for(i=0;in;++i)
scanf("%d",a+i);
//接下來進行排序
for(i=0;in-1;++i)//因為每次需要和a[i]后面的數(shù)進行比較,所以到a[n-2](倒數(shù)第2個元素)就行
{
for(j=i+1;jn;++j)//j從i后一個開始,a[i]與a[j]進行比較
{
if(a[i]a[j])//a[i]為當前值,若是比后面的a[j]大,進行交換
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}//每排序一次,就會將a[i](包括a[i])之后的最小值放在a[i]的位置
for(j=0;jn;++j)
printf("%-5d",a[j]);
printf("\n\n");
}
return 0;
}