當前位置:首頁 » 編程語言 » c語言選擇排序程序

c語言選擇排序程序

發布時間: 2022-04-23 21:23:13

c語言 選擇排序

voidSelectSort(SSTable&L)
{//對順序表L做簡單選擇排序
inti,j,k,n;
SSTable元素類型t; //不能只交換key,要整個結構進行交換
for(i=0;i<L.length-1;i++) //循環范圍變了
{
k=i;
for(j=i+1;j<=L.length;j++)
{
if(L.R[j].key<L.R[k].key)
k=j;//k指向此趟排序中最小的記錄
if(k!=i)
{
t=L.R[i];
L.R[i]=L.R[k];
L.R[k]=t;
}
for(n=0;n<L.length;n++)
printf("%d",L.R[n].key);
printf(" ");
}
}
}

❷ 選擇排序c語言代碼

選擇排序代碼如下:

#include <stdio.h>
int main()
{
int a[100], n, i, j, position, swap;
printf("Enter number of elementsn");
scanf("%d", &n);
printf("Enter %d Numbersn", n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
for(i = 0; i < n - 1; i++)
{
position=i;
for(j = i + 1; j < n; j++)
{
if(a[position] > a[j])
position=j;
}
if(position != i)
{
swap=a[i];
a[i]=a[position];
a[position=swap;
}
}
printf("Sorted Array:n");
for(i = 0; i < n; i++)
printf("%dn", a[i]);
return 0;
}

❸ C語言中的選擇排序法是什麼

選擇排序(Selection sort)是一種簡單直觀的排序演算法。工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。

以下是一個實現選擇排序的例子:

#defineSWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))
//將list中的n個數據,通過選擇排序演算法排序。
voidselete_sort(intlist[],intn)
{
inti,j,min,temp;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)//找出最小元素的下標。
if(list[j]<list[min])
min=j;
SWAP(list[i],list[min],temp);//交換最小元素到當前起始位置。
}
}

❹ 用C語言實現選擇排序

程序如下,但是這個題目有些問題,隨機產生10000個100之內的整數,根據概率來看至少有100個左右的100,所以輸出前10個最大值基本上100%的可能都是100,你要是不放心,可以將我下面的程序裡面的k改成10000看一下實際效果:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>

#define N 10000

void SelectSort ( int array[], int n )
{
int nMinIndex;
int nIndex_1, nIndex_2;

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

for (nIndex_2 = nIndex_1 + 1 ; nIndex_2 < n;nIndex_2++)
{

if ( array[nMinIndex] > array[nIndex_2] )
{
nMinIndex = nIndex_2;
}

}

if ( nMinIndex != nIndex_1 )
{
int temp = array[nIndex_1];
array[nIndex_1] = array[nMinIndex];
array[nMinIndex] = temp ;
}

}
}

void ShowArray(int array[], int k)
{
int i;
for (i = 0; i < k; i++)
{
printf("%d\t", array[i]);
if ((i+1)%10 == 0)
{
printf("\n");
}
}
printf("\n");
}

int main()
{
int array[N] = {0};
int k=10,i;

srand((unsigned) time(NULL));
for(i=0;i<N;i++)
array[i]=rand()%100+1;

SelectSort(array, N);

printf("Sorted Array:\n");
ShowArray(array, k);

system("pause");

return 0;
}

❺ C語言程序 用選擇法對十個數排序

#include <stdio.h>

int main()

{int i,j,min,temp,a[11];

printf("enter data: ");

for (i=1;i<=10;i++)

{printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf(" ");

printf("The orginal numbers: ");

for (i=1;i<=10;i++)

printf("%5d",a[i]);

printf(" ");

for (i=1;i<=9;i++)

{min=i;

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

if (a[min]>a[j]) min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

printf(" The sorted numbers: ");

for (i=1;i<=10;i++)

printf("%5d",a[i]);

printf(" ");

return 0;

}

空白字元

空白字元會使scanf()函數在讀操作中略去輸入中的一個或多個空白字元,空白符可以是space,tab,newline等等,直到第一個非空白符出現為止。

非空白字元

一個非空白字元會使scanf()函數在讀入時剔除掉與這個非空白字元相同的字元。

❻ C語言:用選擇排序法對一個數組里的數進行排序,從小到大,要求選出小的進行排序

#include<stdio.h>

intmain()

{

inti=0;

inta[10]={0,5,2,3,6,9,8,7,4,1};

intj=0;

inttmp=0;

intm=sizeof(a)/sizeof(a[0]);//s數組大小

for(i=0;i<m-1;i++)//比較m-1次

{

for(j=0;j<m-i-1;j++)//最後一次比較a[m-i-1]與a[m-i-2]

{

if(a[j]>a[j+1])//如果a[j]比a[j+1]大則交換內容

{

tmp=a[j+1];

a[j+1]=a[j];

a[j]=tmp;

}

}

}

for(i=0;i<m;i++)

{

printf("%d",a[i]);//列印

}

printf(" ");

return0;

}

(6)c語言選擇排序程序擴展閱讀

C語言排序法

把一個數組進行排序可以使用選擇排序法。選擇排序法的原理在是每一趟循環尋找數組中最小的數的下標,然後按照遞增的順序放入數組中。

循環找出最小數的下標,該下標用min保存,直到比較完整個數組,即可找到最小的數,然後將該數放入數組的第一位,這樣就排好了一個元素。

需要再嵌套一層外層循環即可排好所有元素。第二次循環就不用再比較第一個元素了,因為第一個元素已經排好,依次類推,每一次循環就會排好一個,進行n-1次循環即可排好所有元素。

❼ c語言 選擇法排序

void sa(int array[],int n)
{
int i,j,k,temp;
for(i=0;i<10;i++)
{
k=i; //保存i的值,用k來進行循環排序
for(j=i+1;j<n;j++) //將第i個元素後面的元素與第i個元素進行比較
if(array[j]<array[k]) //如果第k=i個元素後面的元素小於i號元素,交換兩個元素的標號, 這樣就將最小元素的標號放到最前面
k=j; //交換標號
temp=array[k]; //循環結束後,交換兩個標號下的元素的值
array[k]=array[i];
array[i]=temp;
}
}
這個程序實現的是由小到大的排序。第二個循環裡面,就是i號元素後面最小的元素對應的標號放到k中,在交換當前元素與k號元素中的值,實現由大到小排序

❽ C語言:設計選擇排序排序的C語言程序。

選擇法排序
#include <stdio.h>
#define N 10
int main()
{
int array[N];
for(int i=0; i<N; i++)
scanf("%d",&array[i]);
for(i=0; i<N; i++)
for(int j=i+1; j<N; j++)
{
if(array[i]<array[j])
{
int t=array[i];
array[i]=array[j];
array[j]=t;
}
}
for(i=0;i<N;i++)
{printf("%3d",array[i]); }
printf("\n");
return 0;
}

程序2
#include <iostream>
using namespace std;
void main()
{
int i,a[10],k=1,z,j;
cout<<"請任意輸入10個數,進行排序."<<endl;
for(i=0;i<=9;i++)
{
cout<<"請輸入第"<<k++<<"個數字"<<endl;
cin>>a[i];
}

for(i=0;i<=8;i++)
for(j=i+1;j<=9;j++)
if(a[i]<a[j])
{z=a[j];a[j]=a[i];a[i]=z;}
cout<<"從大到小順序為"<<endl;
for(i=0;i<=9;i++)
cout<<a[i]<<' ';
}

❾ C語言選擇排序法

#include<stdio.h>

voidswap(int*a,int*b)
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}

voidsort(int*a,unsignedintn,unsignedintm)
{
intmin;
intminSite;
for(inti=0;i<n;++i)
{
min=a[i];
minSite=i;
for(intj=1;j<n;++j)
{
if(a[j]<min)
{
min=a[j];
minSite=j;
}
}
swap(&a[i],&a[minSite]);
if(i<m)
{
for(inti=0;i<n;++i)
printf("%d",a[i]);
putchar(' ');
}
}
}intmain()
{
inta[20];
unsignedintn,m;
printf("請輸入個數n和需要顯示的次數m: ");
scanf("%u%u",&n,&m);
printf("請輸入n個整數: ");
for(inti=0;i<n;++i)
{
scanf("%d",&a[i]);
}
printf("m次輸出如下: ");
sort(a,n,m);

return0;
}

❿ C語言編程:選擇法排序

選擇排序是一種簡單直觀的排序演算法。


工作原理:

每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完。


性能:

選擇排序是不穩定的排序方法(比如序列[5, 5, 3]第一次就將第一個[5]與[3]交換,導致第一個5挪動到第二個5後面)。

選擇排序的時間復雜度是O(n^2)


思想:

n個記錄的文件的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:

①初始狀態:無序區為R[1..n],有序區為空。

②第1趟排序

在無序區R[1..n]中選出關鍵字最小的記錄R[k],將它與無序區的第1個記錄R[1]交換,使R[1..1]和R[2..n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。

……

③第i趟排序

第i趟排序開始時,當前有序區和無序區分別為R[1..i-1]和R(i..n)。該趟排序從當前無序區中選出關鍵字最小的記錄 R[k],將它與無序區的第1個記錄R交換,使R[1..i]和R分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。


C語言版代碼:

#include<stdio.h>
#include<math.h>

#defineMAX_SIZE101
#defineSWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))

voidsort(int[],int);/*selectionsort*/

intmain()
{
inti,n;
intlist[MAX_SIZE];
printf(":");
scanf_s("%d",&n);
if(n<1||n>MAX_SIZE){
fprintf(stderr,"Impropervalueofn ");
exit(1);
}
for(i=0;i<n;i++){/*randomlygeneratenumbers*/
list[i]=rand()*1000;
printf("%d",list[i]);
}
sort(list,n);
printf(" Sortedarray: ");
for(i=0;i<n;i++)/*printoutsortednumbers*/
printf("%d",list[i]);
printf(" ");
return0;
}
voidsort(intlist[],intn)
{
inti,j,min,temp;
for(i=0;i<n-1;i++){
min=i;
for(j=i+1;j<n;j++)
if(list[j]<list[min])
min=j;
SWAP(list[i],list[min],temp);
}
}
熱點內容
羅技g502高級腳本 發布:2025-05-17 17:30:45 瀏覽:217
python解析post請求 發布:2025-05-17 17:27:19 瀏覽:696
社保測算密碼是什麼 發布:2025-05-17 17:25:09 瀏覽:157
phpini修改路徑 發布:2025-05-17 17:19:06 瀏覽:280
mac搭建php開發環境 發布:2025-05-17 17:18:22 瀏覽:782
佟大為關悅上超級訪問 發布:2025-05-17 17:09:50 瀏覽:310
閃迪存儲卡高速 發布:2025-05-17 17:09:14 瀏覽:470
ios文件加密插件 發布:2025-05-17 17:05:48 瀏覽:797
androidbutton自定義 發布:2025-05-17 16:58:34 瀏覽:169
android應用生命周期 發布:2025-05-17 16:53:16 瀏覽:779